class Node(object):
# 创建节点
def __init__(self, a):
self.ele = a
self.left = None
self.right = None
class Tree(object):
# 创建树
def __init__(self):
self.root = None
# 构造二叉树
def add(self, a):
node = Node(a)
if self.root is None:
self.root = node
return
queue = [self.root]
while queue:
temp = queue.pop(0)
if temp.left is None:
temp.left = node
return
else:
queue.append(temp.left)
if temp.right is None:
temp.right = node
return
else:
queue.append(temp.right)
# 广度优先遍历
def bre_ord(self):
if self.root is None:
return
queue = [self.root]
while queue:
temp = queue.pop(0)
print(temp.ele)
if temp.left is not None:
queue.append(temp.left)
if temp.right is not None:
queue.append(temp.right)
# 先序遍历
def pre_ord(self, node):
if node is None:
return
print(node.ele)
self.pre_ord(node.left)
self.pre_ord(node.right)
# 中序遍历
def in_ord(self, node):
if node is None:
return
self.in_ord(node.left)
print(node.ele)
self.in_ord(node.right)
# 后序遍历
def end_ord(self, node):
if node is None:
return
self.end_ord(node.left)
self.end_ord(node.right)
print(node.ele)
#创建二叉树
tree = Tree()
tree.add(0)
tree.add(1)
tree.add(2)
tree.add(3)
tree.add(4)
tree.add(5)
# 广度优先遍历
tree.bre_ord()
# 先序遍历
tree.pre_ord(tree.root)
#中序遍历
tree.in_ord(tree.root)
#后序遍历
tree.end_ord(tree.root)
python实现二叉树 和几种遍历方式
最新推荐文章于 2020-03-23 16:44:58 发布