python若一棵树采用长子兄弟链存储结构t存储,设计一个算法求其高度并进行测试
时间: 2023-06-20 19:05:28 浏览: 45
以下是一种求解该问题的递归算法:
```
def tree_height(t):
if not t: # 如果t为空树,高度为0
return 0
else:
# 递归求解每个子树的高度,并取最大值加上1作为当前树的高度
return max(tree_height(t.child), tree_height(t.next)) + 1
```
其中,`t.child`表示t的第一个子节点,`t.next`表示t的下一个兄弟节点。如果t为空树,则递归终止,返回0。
下面是一个测试样例,假设我们有以下一棵树:
```
A
/ | \
B C D
/ \ / \
E F G H
```
使用长子兄弟链存储结构t存储,可以定义如下节点类:
```
class TreeNode:
def __init__(self, value):
self.value = value
self.child = None
self.next = None
```
则可以按如下方式构建树:
```
A = TreeNode('A')
B = TreeNode('B')
C = TreeNode('C')
D = TreeNode('D')
E = TreeNode('E')
F = TreeNode('F')
G = TreeNode('G')
H = TreeNode('H')
A.child = B
B.next = C
C.next = D
B.child = E
E.next = F
D.child = G
G.next = H
```
最后,调用`tree_height(A)`即可计算出该树的高度,结果为3。