• LeetCode--111--最长公共前缀


    问题描述:

    给定一个二叉树,找出其最小深度。

    最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

    说明: 叶子节点是指没有子节点的节点。

    示例:

    给定二叉树 [3,9,20,null,null,15,7],

        3
       / 
      9  20
        /  
       15   7

    返回它的最小深度  2。

    思路:

    用层序遍历,发现为叶子节点时,返回其所在的层即为最小深度。

    方法1:

     1 class Solution(object):
     2     def minDepth(self, root):
     3         """
     4         :type root: TreeNode
     5         :rtype: int
     6         """
     7         if not root:
     8             return 0
     9         if not root.left and not root.right:
    10             return 1
    11         last = 0
    12         front = -1
    13         rear = -1
    14         level = 0
    15         l_list=[]
    16         l_list.append(root)
    17         rear += 1
    18         level += 1
    19         while front < rear:        
    20             front += 1
    21             p = l_list.pop(0)
    22             if not p.left and not p.right:
    23                 return level
    24             if p.left:
    25                 l_list.append(p.left)
    26                 rear += 1
    27             if p.right:
    28                 l_list.append(p.right)
    29                 rear += 1
    30             if front == last:
    31                 level += 1
    32                 last = rear

    方法2:(递归)当左子树为null时,高度为右子树+1,树的最小高度为左子树最小的高度+1.

     1 class Solution(object):
     2     def minDepth(self, root):
     3         """
     4         :type root: TreeNode
     5         :rtype: int
     6         """
     7         if root:
     8             if root.left==None:
     9                 return self.minDepth(root.right)+1
    10             elif root.right==None:
    11                 return self.minDepth(root.left)+1
    12             else:
    13                 return min(self.minDepth(root.left),self.minDepth(root.right))+1
    14         else:
    15             return 0

    2018-09-10 19:23:25

  • 相关阅读:
    从零开始整SpringBoot-工具与插件
    算法与数据结构学习笔记(目录)
    牛客小白月赛30(个人题解)
    Manjaro 上手使用简明教程
    C++函数:std::tie 详解
    Educational Codeforces Round 99 (Rated for Div. 2) (A ~ F)个人题解
    VS Code C++ 项目快速配置模板
    【字符串算法】字典树详解
    关于算法竞赛某些常见基础错误
    Teacher Ma专场
  • 原文地址:https://www.cnblogs.com/NPC-assange/p/9622036.html
Copyright © 2020-2023  润新知