二叉树的深度

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

  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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容