Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
For example:
Given binary tree {3,9,20,#,#,15,7}
,
3 / \ 9 20 / \ 15 7
return its level order traversal as:
[ [3], [9,20], [15,7] ]
confused what "{1,#,2,3}"
means? > read more on how binary tree is serialized on OJ.
OJ's Binary Tree Serialization:
The serialization of a binary tree follows a level order traversal, where '#' signifies a path terminator where no node exists below.
Here's an example:
1 / \ 2 3 / 4 \ 5The above binary tree is serialized as
"{1,2,3,#,#,4,#,#,5}"
.
分析:
二叉树的层次遍历,可以用队列,也可以用队列。
代码:
# Definition for a binary tree node.
class TreeNode(object):
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution(object):
def levelOrder(self, root):
"""
:type root: TreeNode
:rtype: List[List[int]]
"""
treedict = {}
self.traverse(root, 0, treedict)
levelNodes = []
for k in treedict.keys():
levelNodes.append(treedict[k])
return levelNodes
def traverse(self, root, level, treedict):
if root:
if level in treedict:
treedict[level].append(root.val)
else:
treedict[level] = [root.val]
self.traverse(root.left, level + 1, treedict)
self.traverse(root.right, level + 1, treedict)