Python学习打卡--day42(算法练习:二叉树排序)

"""
二叉树遍历
"""
class Node:
    def __init__(self, value=None, left=None, right=None):
        self.value = value
        self.left = left  # 左子树
        self.right = right  # 右子树

    # 前序遍历:根左右 DBACEGF
    def preTraverse(self, root):
        if root is None:
            return
        print(root.value)
        self.preTraverse(root.left)
        self.preTraverse(root.right)

    # 中序遍历:左根右 ABCDEFG
    def midTraverse(self, root):
        if root is None:
            return
        self.midTraverse(root.left)
        print(root.value)
        self.midTraverse(root.right)

    # 后序遍历:左右根 ACBFGED
    def afterTraverse(self, root):
        if root is None:
            return
        self.afterTraverse(root.left)
        self.afterTraverse(root.right)
        print(root.value)


if __name__ == '__main__':
    root = Node('D', Node('B', Node('A'), Node('C')), Node('E', right=Node('G', Node('F'))))
    print('前序遍历:')
    root.preTraverse(root)
    print("中序顺序:")
    root.midTraverse(root)
    print("后序顺序:")
    root.afterTraverse(root)

运行结果:
前序遍历:
D
B
A
C
E
G
F
中序顺序:
A
B
C
D
E
F
G
后序顺序:
A
C
B
F
G
E
D

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值