引入
- 如下图:
Python实现
class ArrayBinaryTree(object):
def __init__(self, array):
self.array = array # 必须传入一个数组
def pre_order(self, index): # 传入要遍历数组的下标
if self.array is None or len(self.array) == 0:
print("数组为空,无法按照二叉树的前序遍历")
# 前序遍历,先输出当前元素
print(self.array[index], end=" ")
# 向左递归,先判断是否越界
if 2 * index + 1 < len(self.array):
self.pre_order(2 * index + 1)
# 向右递归,先判断是否越界
if 2 * index + 2 < len(self.array):
self.pre_order(2 * index + 2)
def in_order(self, index): # 中序遍历
if self.array is None or len(self.array) == 0:
print("数组为空,无法按照二叉树的中序遍历")
if 2 * index + 1 < len(self.array):
self.in_order(2 * index + 1)
print(self.array[index], end=" ")
if 2 * index + 2 < len(self.array):
self.in_order(2 * index + 2)
def post_order(self, index): # 后序遍历
if self.array is None or len(self.array) == 0:
print("数组为空,无法按照二叉树的后序遍历")
if 2 * index + 1 < len(self.array):
self.post_order(2 * index + 1)
if 2 * index + 2 < len(self.array):
self.post_order(2 * index + 2)
print(self.array[index], end=" ")
if __name__ == '__main__':
a = ArrayBinaryTree([1, 2, 3, 4, 5, 6, 7])
a.pre_order(0)
print()
a.in_order(0)
print()
a.post_order(0)
''' 输出结果
1 2 4 5 3 6 7
4 2 5 1 6 3 7
4 5 2 6 7 3 1
'''