美文网首页
二叉树的深度

二叉树的深度

作者: hustyanye | 来源:发表于2019-07-21 20:25 被阅读0次

    递归的写法的话,主要是考虑清楚递归条件的返回值,以及如何判断最大的深度。

    1. 递归的返回值,就是叶子节点的下一层,node都为空了,返回0就好。注意不是返回1!!!
    2. 对于单个节点来说,他的深度为左右子树的深度最大值+1
    class Solution(object):
        def maxDepth(self, root):
            """
            :type root: TreeNode
            :rtype: int
            """
            if not root:
                return 0
            return max(self.maxDepth(root.left),self.maxDepth(root.right)) +1
    

    非递归写法的话,可以用层次遍历的思路,层次遍历的时候,注意用队列保存每一层的值。然后每一层用len去取当前队列的宽度!

    class Solution(object):
        def maxDepth(self, root):
            """
            :type root: TreeNode
            :rtype: int
            """
            if not root:
                return 0
            
            from collections import deque
            level = 0
            que = deque([root])
            while que:
                level += 1
                level_len = len(que)
                for i in range(0,level_len):
                    tmp_node = que.popleft()
                    if tmp_node.left:
                        que.append(tmp_node.left)
                    if tmp_node.right:
                        que.append(tmp_node.right)
            return level
    

    相关文章

      网友评论

          本文标题:二叉树的深度

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