什么是二叉树的遍历?如何用python实现?

125 阅读1分钟

"""
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,