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 @   Junior_bond  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示