Python实现顺序存储二叉树 顺序存储二叉树的遍历

阅读目录

引入

在这里插入图片描述

  • 如下图:
    在这里插入图片描述

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 
'''
发布了146 篇原创文章 · 获赞 37 · 访问量 7858

猜你喜欢

转载自blog.csdn.net/storyfull/article/details/103741022