#encoding=utf-8
#二叉树
import Queue
class Node(object):
def __init__(self,value=None,lchild=None,rchild=None):
self.value = value
self.lchild = lchild
self.rchild = rchild
class Tree(object):
#创建树,用层次遍历的方式创建树,单个节点输入
def CreatTree(self,node):
myQueue = Queue.Queue()
if node != None:
myQueue.put(node)
while myQueue.empty() is not True:
nodes = myQueue.get()
print nodes.value
LVal = raw_input("输入左孩子节点值:")
if LVal == "none":
nodes.lchild = None
else:
nodes.lchild = Node(LVal)
myQueue.put(nodes.lchild)
RVal = raw_input("输入右孩子节点值:")
if RVal == "none":
nodes.rchild = None
else:
nodes.rchild = Node(RVal)
myQueue.put(nodes.rchild)
return "creat tree success"
#创建树,递归创建
def CreatTree1(self,root):
a = raw_input("输入节点值:")
if a == "none":
root = None
else:
root.value = a
root.lchild = Node()
self.CreatTree1(root.lchild)
root.rchild = Node()
self.CreatTree1(root.rchild)
#BFS-层次遍历
def BFSTraver(self,node):
myQueue = Queue.Queue()
ListVal = []
if node != None:
myQueue.put(node)
while myQueue.empty() is not True:
node1 = myQueue.get()
ListVal.append(node1.value)
if node1.lchild != None:
myQueue.put(node1.lchild)
if node1.rchild != None:
myQueue.put(node1.rchild)
return ListVal
#DFS-前序遍历
def FrontTraver(self,root,NodeList=[]):
if root!=None:
NodeList.append(root.value)
self.FrontTraver(root.lchild,NodeList)
self.FrontTraver(root.rchild,NodeList)
return NodeList
def MiddleTraver(self,root,NodeList=[]):
if root!=None:
self.MiddleTraver(root.lchild,NodeList)
NodeList.append(root.value)
self.MiddleTraver(root.rchild,NodeList)
return NodeList
def LaterTraver(self,root,NodeList=[]):
if root!=None:
self.LaterTraver(root.lchild,NodeList)
self.LaterTraver(root.rchild,NodeList)
NodeList.append(root.value)
return NodeList
if __name__ == "__main__":
nodes = Node(1)
t1 = Tree()
print "************ 创建树 Start ********"
print t1.CreatTree(nodes)
print "************ 创建树 End **********"
print "************ BFS Start ***********"
print t1.BFSTraver(nodes)
print "************ BFS End *************"
print "************* 递归-DFS-前序 Start *********"
print t1.FrontTraver(nodes)
print "************* 递归-DFS-前序 End ***********"
print "************* 递归-DFS-中序 Start **********"
print t1.MiddleTraver(nodes)
print "************* 递归-DFS-中序 End ************"
print "************* 递归-DFS-后序 Start ************"
print t1.LaterTraver(nodes)
print "************* 递归-DFS-后序 End *************"
python 二叉树的创建和遍历
最新推荐文章于 2023-07-11 16:38:09 发布