leedcode 二叉树的最大深度

迭代法:

class Solution:
    def maxDepth(self, root: Optional[TreeNode]) -> int:
        queue=[root]
        if not root:
            return 0
        depth=0
        while queue:
            level_len = len(queue)#第k层存在的节点数
            for i in range(level_len):#找出第k+1层存在的节点数
                cur_node=queue.pop(0) #一轮循环把这一层全部出栈  顺便把下一层全部堆栈
                if cur_node.left:
                    queue.append(cur_node.left)
                if cur_node.right:
                    queue.append(cur_node.right)
            depth+=1
        return depth

 递归法:

class Solution:
    def maxDepth(self, root: Optional[TreeNode]) -> int:#递归的两大要素
        if not root:#终止条件
            return 0
        return max(self.maxDepth(root.left),self.maxDepth(root.right))+1#重复问题
class Solution:
    def maxDepth(self, root: Optional[TreeNode]) -> int:
        # 终止条件
        if not root:
            return 0

        # 重复问题:计算左子树的最大深度
        left_depth = self.maxDepth(root.left)
        # 重复问题:计算右子树的最大深度
        right_depth = self.maxDepth(root.right)

        # 返回当前节点的深度(左右子树的较大深度 + 1)
        return max(left_depth, right_depth) + 1

 

posted @ 2024-02-18 16:31  Junior_bond  阅读(11)  评论(0)    收藏  举报