您的位置:首页 > 编程语言 > Python开发

算法题/层次遍历二叉树

2017-08-23 10:37 190 查看

python2.7



#coding:utf-8

#创建二叉树
class Node(object):
def __init__(self,data,left,right):
self.data = data
self.left = left
self.right = right

#创建二叉树
class Tree(object):
def __init__(self,data):
self.root = Node(data,None,None)
self.size = 1

#层次遍历二叉树
def print_cengci(self):
#根节点
"""
根--->左--->右  (弹出根)
左--->右--->左左--->左右(弹出左)
右--->左左--->左右--->右左--->右右

"""
stack = [self.root]
while stack:
temp = stack.pop(0)
print(temp.data+' ',end=' ')
#如果有左子树结点
if temp.left:
stack.append(temp.left)
if temp.right:
stack.append(temp.right)

if __name__ == '__main__':
#创建二叉树
print('create tree')
tree = Tree(1)
tree.root.left = Node(2,None,None)
tree.root.right = Node(3,None,None)
tree.root.left.left = Node(4,None,None)
tree.root.left.right = Node(5,None,None)
tree.root.right.left = Node(6,None,None)
tree.root.right.right = Node(7,None,None)
tree.root.left.left.left = Node(8,None,None)
tree.root.left.right.right = Node(9,None,None)
tree.root.right.left.right = Node(10,None,None)
tree.root.right.right.left = Node(11,None,None)
tree.root.right.right.right = Node(12,None,None)

print('tree.root.data:',tree.root.data)
print('tree.root.left.data:',tree.root.left.data)
print('tree.root.left.left.data:',tree.root.left.left.data)
print('tree.root.right.right.right.data',tree.root.right.right.right.data)

print('cengcibianli:',tree.print_cengci())


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息