原題
給出一棵二叉樹,返回其節(jié)點值的層次遍歷(逐層從左往右訪問)
給一棵二叉樹 {3,9,20,#,#,15,7} :
3
/ \
9 20
/ \
15 7
返回他的分層遍歷結(jié)果:
[
[3],
[9,20],
[15,7]
]
解題思路
- 實現(xiàn)方式有三種
- 兩個queue
- 一個queue + dummy node
- 一個queue
- 對于使用一個queue的實現(xiàn)方式為,每次先求size,即這一層多少node涉馅。然后再把這一層node的value加入temp組成數(shù)組加入到最后的結(jié)果中,把這一層node的左右兒子加入到queue中
完整代碼
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
import Queue
class Solution(object):
def levelOrder(self, root):
"""
:type root: TreeNode
:rtype: List[List[int]]
"""
if not root:
return []
result = []
MyQueue = Queue.Queue()
MyQueue.put(root)
while not MyQueue.empty():
size = MyQueue.qsize()
temp = []
for i in range(size):
node = MyQueue.get()
if node.left:
MyQueue.put(node.left)
if node.right:
MyQueue.put(node.right)
temp.append(node.val)
result.append(temp)
return result