用python设计算法1、 一棵树采用孩子链存储结构/或长子兄弟链存储结构(任选一种),尝试编程实现: (1) 创建一棵树 (2) 设计一个算法求高度 (3) 设计一个算法实现树的层次遍历 (4) 设计两个算法实现先根遍历和后根遍历,并进行代码测试
时间: 2024-02-06 11:02:34 浏览: 78
好的,我明白了,请稍等一下。
以下是 Python 代码实现,采用孩子链存储结构:
```python
# 定义树的节点
class TreeNode:
def __init__(self, value):
self.value = value
self.children = []
# 创建一棵树
root = TreeNode(1)
node2 = TreeNode(2)
node3 = TreeNode(3)
node4 = TreeNode(4)
node5 = TreeNode(5)
node6 = TreeNode(6)
root.children = [node2, node3]
node2.children = [node4, node5]
node3.children = [node6]
# 定义算法求高度
def get_height(node):
if not node.children:
return 1
else:
heights = [get_height(child) for child in node.children]
return max(heights) + 1
# 测试求高度算法
print(get_height(root)) # 输出 3
# 定义算法实现树的层次遍历
def level_order_traversal(node):
queue = [node]
while queue:
curr = queue.pop(0)
print(curr.value, end=" ")
queue.extend(curr.children)
# 测试层次遍历算法
level_order_traversal(root) # 输出 1 2 3 4 5 6
# 定义算法实现先根遍历
def pre_order_traversal(node):
if node:
print(node.value, end=" ")
for child in node.children:
pre_order_traversal(child)
# 测试先根遍历算法
pre_order_traversal(root) # 输出 1 2 4 5 3 6
# 定义算法实现后根遍历
def post_order_traversal(node):
if node:
for child in node.children:
post_order_traversal(child)
print(node.value, end=" ")
# 测试后根遍历算法
post_order_traversal(root) # 输出 4 5 2 6 3 1
```
以上代码实现了题目所要求的一棵树采用孩子链存储结构的创建,以及求树高度、树的层次遍历、先根遍历和后根遍历的算法。
阅读全文