前面几篇文章讲了从数组到二叉树,如arr=[1,2,3,4,5,6,7,8,9,10]到如下图所示的二叉树。
如果要逐层打印节点,就是层序遍历。
from collections import deque
class Btree():
def __init__(self):
self.data=None
self.lchild=None
self.rchild=None
def printlayerTree(tree):
if tree==None:
return None
else:
q=deque()
q.append(tree)
re=[]
while len(q)>0:
p=q.popleft()
re.append(p.data)
if p.lchild!=None:
q.append(p.lchild)
if p.rchild!=None:
q.append(p.rchild)
return re
这里需要注意的是,队列的理解。
q队列中存放的是节点,而不是self.data那个含义。虽然写着3但是他具有左右子节点。