1.给定一颗二叉树,要求逐层打印二叉树节点的数据
2.代码如下:
from collections import deque
class BiTNode:
def __init__(self):
self.data = None
self.lchild = None
self.rchild = None
#把有序数组转化为二叉树
def arraytotree(arr,start,end):
root = None
if end >= start:
root = BiTNode()
mid = int((start+end+1) / 2)
root.data = arr[mid]
root.lchild = arraytotree(arr,start,mid-1)
root.rchild = arraytotree(arr,mid+1,end)
else:
root = None
return root
#用中序遍历的方法打印出二叉树节点的内容
def printTreeLayer(root):
if root == None:
return
queue = deque()
#树根节点进入队列
queue.append(root)
while len(queue) > 0:
p = queue.popleft()
print(p.data,end=' ')
if p.lchild != None:
queue.append(p.lchild)
if p.rchild != None:
queue.append(p.rchild)
if __name__ == '__main__':
arr = [1,2,3,4,5,6,7,8,9,10]
root = arraytotree(arr,0,len(arr)-1)
printTreeLayer(root)
结果:
6 3 9 2 5 8 10 1 4 7