"""
二叉树遍历
"""
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