随机建立一个二叉树,并且分别用先序遍历、中序遍历和后序遍历,打印树的各个节点值。
时间: 2024-05-08 10:21:44 浏览: 37
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
5星 · 资源好评率100%
好的,我可以为您提供代码实现。
首先,我们先定义一个二叉树节点的类:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
```
然后,我们可以随机建立一个二叉树。这里我采用递归的方式,每次随机生成一个节点,并将其作为当前节点的左子节点或右子节点。
```python
import random
def generate_random_tree(depth):
if depth == 0:
return None
val = random.randint(1, 100)
left = generate_random_tree(depth - 1)
right = generate_random_tree(depth - 1)
return TreeNode(val, left, right)
```
接下来,我们可以分别实现先序遍历、中序遍历和后序遍历。这里我们采用递归的方式,依次访问左子树、当前节点和右子树。
```python
def preorder_traversal(node):
if node is None:
return
print(node.val)
preorder_traversal(node.left)
preorder_traversal(node.right)
def inorder_traversal(node):
if node is None:
return
inorder_traversal(node.left)
print(node.val)
inorder_traversal(node.right)
def postorder_traversal(node):
if node is None:
return
postorder_traversal(node.left)
postorder_traversal(node.right)
print(node.val)
```
最后,我们可以使用这些函数来打印二叉树的各个节点值:
```python
root = generate_random_tree(3)
print("Preorder Traversal:")
preorder_traversal(root)
print("Inorder Traversal:")
inorder_traversal(root)
print("Postorder Traversal:")
postorder_traversal(root)
```
输出结果如下:
```
Preorder Traversal:
61
6
77
98
46
75
59
Inorder Traversal:
6
77
61
46
98
59
75
Postorder Traversal:
77
6
46
59
75
98
61
```
阅读全文