1、一棵树采用孩子链存储结构/或长子兄弟链存储结构(任选一种),尝试编程实现: (1)创建一棵树 (2)设计一个算法求高度 (3)设计一个算法实现树的层次遍历 (4)设计两个算法实现先根遍历和后根遍历
时间: 2024-01-26 15:02:18 浏览: 30
好的,我会根据你的要求进行回答。
1. 创建一棵树(以孩子链存储结构为例)的代码实现如下:
```python
class TreeNode:
def __init__(self, value):
self.value = value
self.children = []
def add_child(self, node):
self.children.append(node)
def create_tree():
# 构建一个孩子链存储结构的树
root = TreeNode('A')
node_b = TreeNode('B')
node_c = TreeNode('C')
node_d = TreeNode('D')
node_e = TreeNode('E')
node_f = TreeNode('F')
node_g = TreeNode('G')
node_h = TreeNode('H')
node_i = TreeNode('I')
root.add_child(node_b)
root.add_child(node_c)
node_b.add_child(node_d)
node_b.add_child(node_e)
node_e.add_child(node_h)
node_c.add_child(node_f)
node_c.add_child(node_g)
node_g.add_child(node_i)
return root
```
2. 求树的高度的算法实现如下:
```python
def get_tree_height(root):
# 递归求解
if not root.children:
return 1
else:
heights = []
for child in root.children:
heights.append(get_tree_height(child))
return max(heights) + 1
```
3. 实现树的层次遍历的算法实现如下:
```python
def level_order_traversal(root):
queue = [root]
while queue:
node = queue.pop(0)
print(node.value)
queue.extend(node.children)
```
4. 先根遍历和后根遍历的算法实现如下:
```python
def pre_order_traversal(root):
print(root.value)
for child in root.children:
pre_order_traversal(child)
def post_order_traversal(root):
for child in root.children:
post_order_traversal(child)
print(root.value)
```
以上是树的孩子链存储结构的实现代码和算法实现。如果你选择长子兄弟链存储结构,那么有些算法会有所不同。
阅读全文