美文网首页LeetCode 解题
LeetCode 104. 二叉树的最大深度(Maximum D

LeetCode 104. 二叉树的最大深度(Maximum D

作者: leacoder | 来源:发表于2019-04-02 22:39 被阅读0次
    LeetCode.jpg

    104. 二叉树的最大深度

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

    二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

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

    示例:

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

      3
     / \
    9  20
      /  \
     15   7
    

    返回它的最大深度 3 。

    Python3实现

    DFS深度优先

    # Definition for a binary tree node.
    # class TreeNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    # @author:leacoder 
    # @des:  DFS 深度优先  二叉树的最大深度  时间复杂度 O(n)
    
    class Solution:
        def maxDepth(self, root: TreeNode) -> int:
            if not root: 
                return 0  #入参校验
            else: # DFS
                leftlevel = self.maxDepth(root.left) #  递归 左子树 得到其深度
                rightlevel = self.maxDepth(root.right) #  递归 右子树 得到其深度
                return 1 + max(leftlevel,rightlevel) # 取最大深度 
    

    BFS广度优先

    # Definition for a binary tree node.
    # class TreeNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    # @author:leacoder 
    # @des:  BFS 广度优先  二叉树的最大深度  时间复杂度 O(n)
    
    class Solution:
        def maxDepth(self, root: TreeNode) -> int:
            if not root: 
                return 0  #入参校验
            else: # BFS
                queue = collections.deque()
                queue.append(root) # 辅助队列
                maxlevel = 0 #层级记录
                while queue:
                    levelsize = len(queue) #
                    for i in range(levelsize): 
                        node = queue.popleft()
                        if node.left:
                            queue.append(node.left)
                        if node.right:
                            queue.append(node.right)
                    maxlevel +=1 # 广度优先搜索 每层搜完 层级+1
                
                return maxlevel
    

    GitHub链接:
    https://github.com/lichangke/LeetCode
    知乎个人首页:
    https://www.zhihu.com/people/lichangke/
    个人Blog:
    https://lichangke.github.io/
    欢迎大家来一起交流学习

    相关文章

      网友评论

        本文标题:LeetCode 104. 二叉树的最大深度(Maximum D

        本文链接:https://www.haomeiwen.com/subject/zeqobqtx.html