对以左二子-右兄弟链接表示的树求树的深度
时间: 2024-05-06 10:18:10 浏览: 39
以左二子-右兄弟链接表示的树,也称为二叉树表示法,它是一种常见的树的存储方式。在这种存储方式中,每个节点都有一个指向它的第一个子节点的指针(左孩子),以及一个指向它的下一个兄弟节点的指针(右兄弟),叶子节点的左孩子指针为 NULL。
要求一棵树的深度,可以使用深度优先搜索(DFS)或广度优先搜索(BFS)算法。这里以 DFS 为例,使用递归实现。
具体实现步骤如下:
1. 如果树为空,则深度为 0。
2. 否则,遍历根节点的所有子节点,找到深度最大的子树(即子树深度最大的子节点),并将其深度加 1,作为根节点的深度。
以下是 Python 实现代码:
```python
class TreeNode:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
def treeDepth(root: TreeNode) -> int:
if not root:
return 0
max_depth = 0
child = root.left
while child:
depth = treeDepth(child)
max_depth = max(max_depth, depth)
child = child.right
return max_depth + 1
```
其中,TreeNode 表示树的节点,包含 val、left、right 三个属性,分别表示节点的值、左孩子和右兄弟。
treeDepth 函数为求深度的主函数,输入参数为根节点,返回树的深度。在函数中,首先判断根节点是否为空,如果为空,则深度为 0。否则,遍历根节点的所有子节点,找到深度最大的子树,并将其深度加 1,作为根节点的深度。遍历子节点时,使用 while 循环,每次遍历一个节点,调用 treeDepth 函数求出其深度,然后更新 max_depth,最后继续遍历它的右兄弟节点,直到遍历完所有子节点。
阅读全文