class Node:
def __init__(self,item):
self.item = item
self.left = None
self.right = None
class Tree:
def __init__(self):
self.root = None
def addNode(self,item):
node = Node(item)
#如果插入第一个节点的情况
if self.root is None:
self.root = node
return
q = [self.root]
while q is not None:
nd = q.pop(0)
if nd.left is None:
nd.left = node
return
else:
q.append(nd.left)
if nd.right is None:
nd.right = node
return
else:
q.append(nd.right)
def travel(self):
q = [self.root]
if self.root is None:
return
while q:
nd = q.pop(0)
print(nd.item,end=",")
if nd.left:
q.append(nd.left)
if nd.right:
q.append(nd.right)
#前序遍历:根左右
def forward(self,root):
if root is None:
return
print(root.item,end=",")
self.forward(root.left)
self.forward(root.right)
#中序遍历:左根右
def mid(self,root):
if root is None:
return
self.mid(root.left)
print(root.item,end=",")
self.mid(root.right)
#后序遍历 :左右根
def back(self,root):
if root is None:
return
self.back(root.left)
self.back(root.right)
print(root.item,end=",")
tree = Tree()
tree.addNode(1)
tree.addNode(2)
tree.addNode(3)
tree.addNode(4)
tree.addNode(5)
tree.addNode(6)
tree.forward(tree.root)
print("")
tree.mid(tree.root)
print("")
tree.back(tree.root)
前序: 1,2,4,5,3,6,
中序 :4,2,5,1,6,3,
后序: 4,5,2,6,3,1,
二叉树和排序二叉树 python实现
最新推荐文章于 2022-07-04 20:36:06 发布