二叉树的遍历

  •  二叉树前序遍历:遍历规则顺序为【根左右】
  •  二叉树的中序遍历:遍历顺序规则为【左根友】
  •  二叉树的后序遍历:遍历规则为【左右根】
  •  二叉树的层次遍历

 

from collections import deque


class BiTreeNode:                         #创建B树节点
    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
c.lchild = b
c.rchild = d
g.rchild = f

root = e

def pre_order(root):                    #前序遍历
    if root:
        print(root.data, end='')
        pre_order(root.lchild)
        pre_order(root.rchild)

def in_order(root):                     #中序遍历
    if root:
        in_order(root.lchild)
        print(root.data, end='')
        in_order(root.rchild)


def post_order(root):                  #后序遍历
    if root:
        post_order(root.lchild)
        post_order(root.rchild)
        print(root.data, end='')


def level_order(root):                #层次遍历
    queue = deque()
    queue.append(root)
    while len(queue) > 0:
        node = queue.popleft()
        print(node.data,end='')
        if node.lchild:
            queue.append(node.lchild)
        if node.rchild:
            queue.append(node.rchild)



pre_order(root)
print("") 
#结果为:EACBDGF

in_order(root)
print("")
结果为:ABCDEGF

post_order(root)
print("")
结果为:BDCAFGE

level_order(root)
结果为:EAGCFBD

 

posted @ 2018-03-05 16:01  星雨5213  阅读(74)  评论(0)    收藏  举报