返回

二叉树深度算法:深入解析递归求解方法

前端

二叉树深度算法:递归求解

算法

二叉树的深度是指从根节点到最远叶子节点的最长路径上的节点数。递归求解二叉树深度算法的核心思想是:

  • 如果二叉树为空,则深度为 0。
  • 否则,左子树的深度加上右子树的深度,加上根节点自身深度 1,即为二叉树的深度。

递归代码实现:

def max_depth(root):
    """
    递归求解二叉树最大深度。

    Args:
        root (TreeNode): 根节点。

    Returns:
        int: 二叉树的最大深度。
    """
    if not root:
        return 0

    left_depth = max_depth(root.left)
    right_depth = max_depth(root.right)

    return max(left_depth, right_depth) + 1

算法分析:

  • 时间复杂度:O(n),其中 n 是二叉树的节点数。由于算法会遍历整个二叉树,因此时间复杂度为 O(n)。
  • 空间复杂度:O(n),用于存储二叉树的递归调用栈。最坏情况下,当二叉树为一条链时,递归调用栈的大小为 n。

应用场景:

该算法广泛应用于各种需要求解二叉树深度的问题中,例如:

  • 判断二叉树是否为平衡树
  • 求解二叉树的直径
  • 计算二叉树中所有节点的平均深度

代码示例:

from typing import TreeNode

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

# 创建一个二叉树
root = TreeNode(3)
root.left = TreeNode(9)
root.right = TreeNode(20)
root.right.left = TreeNode(15)
root.right.right = TreeNode(7)

# 计算二叉树深度
depth = max_depth(root)
print(depth)  # 输出:3

参考资料: