python二叉树的顺序存储
时间: 2023-07-05 21:33:44 浏览: 174
在 Python 中,二叉树的顺序存储可以使用数组来实现。假设二叉树的深度为n,则可以使用长度为2^n-1的数组来存储二叉树的节点。
具体实现如下:
```python
class BinaryTree:
def __init__(self, max_size):
self.max_size = max_size
self.tree = [None] * max_size # 初始化一个长度为max_size的数组
def add_node(self, value):
if self.tree[0] is None: # 如果根节点为空,则插入根节点
self.tree[0] = value
else:
index = 0
while True:
if value < self.tree[index]:
left_child = 2 * index + 1
if self.tree[left_child] is None: # 如果左子节点为空,则插入左子节点
self.tree[left_child] = value
break
else:
index = left_child
else:
right_child = 2 * index + 2
if self.tree[right_child] is None: # 如果右子节点为空,则插入右子节点
self.tree[right_child] = value
break
else:
index = right_child
def pre_order(self, index):
if index < self.max_size and self.tree[index] is not None:
print(self.tree[index], end=' ')
self.pre_order(2 * index + 1)
self.pre_order(2 * index + 2)
def in_order(self, index):
if index < self.max_size and self.tree[index] is not None:
self.in_order(2 * index + 1)
print(self.tree[index], end=' ')
self.in_order(2 * index + 2)
def post_order(self, index):
if index < self.max_size and self.tree[index] is not None:
self.post_order(2 * index + 1)
self.post_order(2 * index + 2)
print(self.tree[index], end=' ')
```
在上述代码中,`BinaryTree` 类实现了二叉树的顺序存储。其中,`add_node` 方法用于向二叉树中插入节点;`pre_order`、`in_order` 和 `post_order` 方法分别用于实现二叉树的先序遍历、中序遍历和后序遍历。
阅读全文