📅  最后修改于: 2023-12-03 14:56:57.504000             🧑  作者: Mango
树是一种非常常用的数据结构,因为它可以用来描述层级关系,比如文件目录结构、网站导航菜单等等。在处理树结构时,经常需要计算树的深度或高度,本文将介绍如何用 Python 编写一个程序来找到一棵树的最大深度或高度。
树的深度指的是根节点到叶子节点的最长路径的长度,也可以说是树中节点的最大层数。树的高度指的是树中最长路径的长度,也就是树的深度减去一。
这两个概念很相似,但有一个不同点:深度是从上往下数,高度是从下往上数。下图展示了一个二叉树的深度和高度:
A
/ \
B C
/ \
D E
/
F
计算树的深度或高度可以使用递归算法。我们可以将树分解为根节点和两棵子树,分别求它们的深度或高度,最终的答案就是左右子树中的最大值加一。
具体来说,递归算法包括以下步骤:
以下是 Python 的递归实现:
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def max_depth(root: TreeNode) -> 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
为了验证算法的正确性,我们需要准备一些测试用例。下面是几个测试用例:
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)
root.left.right = TreeNode(5)
assert max_depth(root) == 3
root = TreeNode(1)
assert max_depth(root) == 1
assert max_depth(None) == 0
本文介绍了如何用 Python 编写一个程序来找到一棵树的最大深度或高度。根据上述算法,我们可以递归计算树的深度或高度,并且可以用几个简单的测试用例验证算法的正确性。