返回
二叉树深度算法:深入解析递归求解方法
前端
2024-01-20 07:44:44
二叉树深度算法:递归求解
算法
二叉树的深度是指从根节点到最远叶子节点的最长路径上的节点数。递归求解二叉树深度算法的核心思想是:
- 如果二叉树为空,则深度为 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
参考资料: