用一维数组存放完全二叉树
时间: 2024-01-17 15:19:02 浏览: 88
一维数组可以用来存放完全二叉树。完全二叉树是一种特殊的二叉树,它的每个节点都按照从上到下、从左到右的顺序依次排列。我们可以使用数组来表示完全二叉树,其中数组的索引表示节点的位置,数组的值表示节点的值。
具体的存储方式如下:
1. 对于完全二叉树中的第i个节点,它的左子节点的索引为2i,右子节点的索引为2i+1。
2. 对于完全二叉树中的第i个节点,它的父节点的索引为i/2(向下取整)。
下面是一个示例,演示如何使用一维数组存放完全二叉树,并实现先序、中序和后序遍历:
```python
# 定义完全二叉树的一维数组表示
tree = [None, 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
# 先序遍历
def preorder(root):
if root <= len(tree) - 1:
if tree[root] is not None:
print(tree[root], end=' ')
preorder(root * 2) # 遍历左子树
preorder(root * 2 + 1) # 遍历右子树
# 中序遍历
def inorder(root):
if root <= len(tree) - 1:
if tree[root] is not None:
inorder(root * 2) # 遍历左子树
print(tree[root], end=' ')
inorder(root * 2 + 1) # 遍历右子树
# 后序遍历
def postorder(root):
if root <= len(tree) - 1:
if tree[root] is not None:
postorder(root * 2) # 遍历左子树
postorder(root * 2 + 1) # 遍历右子树
print(tree[root], end=' ')
# 演示先序、中序和后序遍历
print("先序遍历结果:")
preorder(1)
print("\n中序遍历结果:")
inorder(1)
print("\n后序遍历结果:")
postorder(1)
```
输出结果:
```
先序遍历结果:
A B D H I E J C F G
中序遍历结果:
H D I B J E A F C G
后序遍历结果:
H I D J E B F G C A
```
阅读全文