二叉树的存储和遍历(python实现)

"""
bitree.py 二叉树的遍历实践
思路分析:
1. 使用链式结构存储二叉树的节点数据
2. 节点中存储 数据, 左孩子链接,右孩子链接 三个属性
"""
class Node:#结点的类
    def __init__(self,val,left=None,right=None):
        self.val = val
        self.left = left
        self.right = right

class BiTree:#二叉树类
    def __init__(self,root):
        self.root = root

    # 前序遍历二叉树
    def preOrder(self, root):
        if root is None:#如果根节点为空
            return
        # 访问根结点
        print(root.val, end=' ')
        # 前序遍历左子树
        self.preOrder(root.left)
        # 前序遍历右子树
        self.preOrder(root.right)

    # 中序遍历二叉树
    def inOrder(self, root):
        if root is None:
            return
        # 中序遍历左子树
        self.inOrder(root.left)
        # 访问根结点
        print(root.val, end=' ')
        # 中序遍历右子树
        self.inOrder(root.right)

    # 后遍历二叉树
    def postOrder(self, root):
        if root is None:
            return
        # 后序遍历左子树
        self.postOrder(root.left)
        # 后序遍历右子树
        self.postOrder(root.right)
        # 访问根结点
        print(root.val, end=' ')

if __name__ == '__main__':
    #创建叶子结点
    b = Node('B')
    f = Node('F')
    g = Node('G')
    h = Node('H')
    i = Node('I')
    #创建非叶子结点
    d = Node('D',f,g)
    e = Node('E', h, i)
    c = Node('C', d, e)
    a = Node('A', b, c)# 整个树根
    #创建一个二叉树对象bt,其中a结点对象作为根节点传入
    bt = BiTree(a)

    #前序遍历二叉树
    print("前序遍历:", end=' ')
    bt.preOrder(bt.root)
    print()

    # 中序遍历二叉树
    print("中序遍历:", end=' ')
    bt.inOrder(bt.root)
    print()

    # 后序遍历二叉树
    print("后序遍历:", end=' ')
    bt.postOrder(bt.root)
    print()











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值