创见博客
二叉树的最大深度
七崽爱吃小饼干2025/12/18阅读 0专栏 算法合集

给定一个二叉树 root ,返回其最大深度。

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

示例 1:
codeType
输入:root = [3,9,20,null,null,15,7]
输出:3

示例 2:

codeType
输入:root = [1,null,2]
输出:2

提示:

codeType
树中节点的数量在 [0, 104] 区间内。
-100 <= Node.val <= 100

解法:

解法一: 深度搜索

python
# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution(object):
    def maxDepth(self, root):
        """
        :type root: Optional[TreeNode]
        :rtype: int
        """
        # 可以用深度遍历解决。采用递归的方式

        if root == None:
            return 0

        l = self.maxDepth(root.left) + 1
        r = self.maxDepth(root.right) + 1

        return max(l, r)
        

解法二:广度优先搜索

python
# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution(object):
    def maxDepth(self, root):
        """
        :type root: Optional[TreeNode]
        :rtype: int
        """
        # 可以用广度优先搜索,相当于层次遍历
        if root == None:
            return 0

        queen = []
        queen.append(root)
        depth = 0
        while(len(queen) != 0):
            # 每次循环,要一次把当前层所有元素出队,把下一层所有元素入队
            curlen = len(queen)
            for i in range(0, curlen):
                node = queen.pop(0) # 出队
                if node.left != None:
                    queen.append(node.left)
                if node.right != None:
                    queen.append(node.right)

            depth += 1
            
        return depth
评论
0/100