"""
1.定义二叉树
"""
class BiTreeNode:
def __init__(self,data):
self.data = data
self.lchild = None
self.rchild = None
a = BiTreeNode("A")
b = BiTreeNode("B")
c = BiTreeNode("C")
d = BiTreeNode("D")
e = BiTreeNode("E")
f = BiTreeNode("F")
g = BiTreeNode("G")
e.lchild = a
e.rchild = g
a.rchild = c
g.rchild = f
c.lchild = b
c.rchild = d
"""
2.二叉树的遍历:
前序遍历(根左右):第一个元素是根节点
中序遍历(左根右)
后序遍历(左右根):最后一个元素是根节点
给出前序遍历和中序遍历可以推出后序遍历
给出后序遍历和中序遍历可以推出前序遍历
但是中序遍历是必须的
"""
def pre_order(root):
"""前序遍历 根左右"""
if root:
print(root.data,end=',')
pre_order(root.lchild)
pre_order(root.rchild)
def in_order(root):
"""中序遍历 左根右"""
if root:
pre_order(root.lchild)
print(root.data,end=',')
pre_order( root.rchild)
def post_order(root):
"""后序遍历 左右根"""
if root:
pre_order(root.lchild)
pre_order( root.rchild)
print(root.data,end=',')
pre_order(e)# E,A,C,B,D,G,F,
in_order(e)# A,C,B,D,E,G,F,
post_order(e)# A,C,B,D,E,G,F,