from collections import deque
#结点中定义数据,左右节点
class Node:
def __init__(self,data=-1,lchild=None,rchild=None):
self.data=data
self.lchild=lchild
self.rchild=rchild
class CreateTree:
def __init__(self):
self.root=Node()
self.myque=deque()
# 加入结点(利用队列遍历建树)
def add(self,elem):
node=Node(elem)
if self.root.data==-1:
self.root=node
self.myque.append(self.root)
else:
treenode=self.myque[0]
if treenode.lchild==None:
treenode.lchild=node
self.myque.append(treenode.lchild)
else:
treenode.rchild=node
self.myque.append(treenode.rchild)
self.myque.popleft()
#前序遍历(data->左结点->右结点)
def digui_front(self,root):
if root==None:
return
print root.data
self.digui_front(root.lchild)
self.digui_front(root.rchild)
#中序遍历
def digui_front(self,root):
if root==None:
return
self.digui_front(root.lchild)
print root.data
self.digui_front(root.rchild)
#后序遍历
def digui_front(self,root):
if root==None:
return
self.digui_front(root.lchild)
self.digui_front(root.rchild)
print root.data
#计算树的深度
def depth(self,root):
if root==None:
return 0
ldepth,rdepth=self.depth(root.lchild),self.depth(root.rchild)
return max(ldepth,rdepth)+1
if __name__=="__main__":
elems=range(10)
tree=CreateTree()
for i in elems:
tree.add(i)
tree.digui_front(tree.root)
m =tree.depth(tree.root)
print m
python2.7实现二叉树
最新推荐文章于 2024-10-04 18:59:43 发布