#coding=utf-8 #构建二叉树(二叉树结点) class Node(object): def __init__(self, data, left=None, right=None): self.data = data self.left = left self.right = right tree = Node(1, Node(3, Node(7, Node(0)), Node(6)), Node(2, Node(5), Node(4))) #层次遍历 def level_order(tree): if tree == None: return q = [] q.append(tree) while q: current = q.pop(0) print(current.data) if current.left: q.append(current.left) if current.right: q.append(current.right) #按层次打印 def level2_order(tree): if tree == None: return q = [] q.append(tree) level = 0 d = [] result = {} next_level_num = 0 current_level_num = 1 while q: current = q.pop(0) current_level_num -= 1 d.append(current.data) if current.left: q.append(current.left) next_level_num += 1 if current.right: q.append(current.right) next_level_num += 1 if current_level_num == 0: current_level_num = next_level_num next_level_num = 0 result[level] = d level += 1 d = [] print(result) #深度遍历 def deep(tree): if tree == None: return print(tree.data) deep(tree.left) deep(tree.right) #前序遍历(根 左 右) def pre_order(tree): if tree == None: return print(tree.data) if tree.left: pre_order(tree.left) if tree.right: pre_order(tree.right) #中序遍历(左 根 右) def mid_order(tree): if tree == None: return if tree.left: pre_order(tree.left) print(tree.data) if tree.right: pre_order(tree.right) #后序遍历( 左 右 根) def post_order(tree): if tree == None: return if tree.left: pre_order(tree.left) if tree.right: pre_order(tree.right) print(tree.data)