python实现二叉树以及二叉树的遍历--1(面向对象的方法实现)
2017-10-11 14:51
996 查看
#树
class BTNode(object):
def __init__(self,data,lchild=None,rchild=None):
self.data=data
self.lchild=lchild
self.rchild=rchild
class BTNode_T(object):
def __init__(self,node=None):
self.root=node
#广度搜索方法创建树
def wid_insert(self,data):
node=BTNode(data)
if self.root is None:
self.root=node
return
queue=[self.root]
while queue:
cur=queue.pop(0)
if cur.lchild is not None:
queue.append(cur.lchild)
else:
cur.lchild=node
return
if cur.rchild is not None:
queue.append(cur.rchild)
else:
cur.rchild=node
return
''' 广度遍历(层次遍历) '''
def wid_travel(self):
if self.root is None:
return ' '
queue=[self.root]
while queue:
cur=queue.pop(0)
print cur.data,
if cur.lchild is not None:
queue.append(cur.lchild)
if cur.rchild is not None:
queue.append(cur.rchild)
return ' '
''' 先序遍历(深度遍历):根左右 '''
def pre_travel(self,node):
if node is None:
return ' '
print node.data,
self.pre_travel(node.lchild)
self.pre_travel(node.rchild)
return ' '
''' 中序遍历(深度遍历):左根右 '''
def mid_travel(self,node):
if node is None:
return ' '
self.mid_travel(node.lchild)
print node.data,
self.mid_travel(node.rchild)
return ' '
'''后序遍历(深度遍历):左右根 '''
def post_travel(self,node):
if node is None:
return ' '
self.post_travel(node.lchild)
self.post_travel(node.rchild)
print node.data,
return ' '
tree=BTNode_T()
tree.wid_insert(0)
tree.wid_insert(1)
tree.wid_insert(2)
tree.wid_insert(3)
print '二叉树'
print '广度遍历:',tree.wid_travel()
print '先序遍历:',tree.pre_travel(tree.root)
print '中序遍历:',tree.mid_travel(tree.root)
print '后序遍历:',tree.post_travel(tree.root)
class BTNode(object):
def __init__(self,data,lchild=None,rchild=None):
self.data=data
self.lchild=lchild
self.rchild=rchild
class BTNode_T(object):
def __init__(self,node=None):
self.root=node
#广度搜索方法创建树
def wid_insert(self,data):
node=BTNode(data)
if self.root is None:
self.root=node
return
queue=[self.root]
while queue:
cur=queue.pop(0)
if cur.lchild is not None:
queue.append(cur.lchild)
else:
cur.lchild=node
return
if cur.rchild is not None:
queue.append(cur.rchild)
else:
cur.rchild=node
return
''' 广度遍历(层次遍历) '''
def wid_travel(self):
if self.root is None:
return ' '
queue=[self.root]
while queue:
cur=queue.pop(0)
print cur.data,
if cur.lchild is not None:
queue.append(cur.lchild)
if cur.rchild is not None:
queue.append(cur.rchild)
return ' '
''' 先序遍历(深度遍历):根左右 '''
def pre_travel(self,node):
if node is None:
return ' '
print node.data,
self.pre_travel(node.lchild)
self.pre_travel(node.rchild)
return ' '
''' 中序遍历(深度遍历):左根右 '''
def mid_travel(self,node):
if node is None:
return ' '
self.mid_travel(node.lchild)
print node.data,
self.mid_travel(node.rchild)
return ' '
'''后序遍历(深度遍历):左右根 '''
def post_travel(self,node):
if node is None:
return ' '
self.post_travel(node.lchild)
self.post_travel(node.rchild)
print node.data,
return ' '
tree=BTNode_T()
tree.wid_insert(0)
tree.wid_insert(1)
tree.wid_insert(2)
tree.wid_insert(3)
print '二叉树'
print '广度遍历:',tree.wid_travel()
print '先序遍历:',tree.pre_travel(tree.root)
print '中序遍历:',tree.mid_travel(tree.root)
print '后序遍历:',tree.post_travel(tree.root)
相关文章推荐
- java实现二叉树的构建以及3种遍历方法
- Java 实现二叉树的构建以及3种遍历方法
- java实现二叉树的构建以及3种遍历方法
- python实现二叉树,以及二叉树的遍历
- java实现二叉树的构建以及3种遍历方法(转)
- java实现二叉树的构建以及3种遍历方法
- 「数据结构」二叉树的遍历以及Python实现
- 二叉树的遍历以及重建(Python实现)
- java实现二叉树的构建以及三种遍历方法(先序遍历,中序遍历,后续遍历)
- python实现二叉树以及二叉树的遍历--1(函数实现)
- java实现二叉树的构建以及3种遍历方法
- java实现二叉树的构建以及3种遍历方法
- java实现二叉树的构建以及3种遍历方法
- Java 实现二叉树的构建以及3种遍历方法
- java实现二叉树的构建以及3种遍历方法
- java实现二叉树的构建以及3种遍历方法
- java实现二叉树的构建以及3种遍历方法
- java实现二叉树的构建以及3种遍历方法
- java实现二叉树的构建以及3种遍历方法
- java实现二叉树的构建以及3种遍历方法