给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问)
样例
给一棵二叉树 {3,9,20,#,#,15,7}
:
3
/ \
9 20
/ \
15 7
返回他的分层遍历结果:
[
[3],
[9,20],
[15,7]
]
树的层次遍历就是用队列来做,这是很基础的数据结构,python里有内置的queue,代码如下:
class TreeNode:
def __init__(self, val):
self.val = val
self.left, self.right = None, None
class Solution:
"""
@param root: A Tree
@return: Level order a list of lists of integer
"""
def levelOrder(self, root):
# write your code here
result = []
if(root is None):return result
from queue import Queue
q=Queue()
q.put(root)
while(q.qsize()!=0):
size=q.qsize()
list=[]
for i in range(size):
node=q.get()
list.append(node.val)
if(node.left is not None):
q.put(node.left)
if(node.right is not None):
q.put(node.right)
result.append(list)
return result
a=TreeNode(1)
b=a.left=TreeNode(2)
c=a.right=TreeNode(3)
d=b.left=TreeNode(4)
s=Solution()
print(s.levelOrder(a))