102. Binary Tree Level Order Traversal
For example:
Given binary tree [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
return its level order traversal as:
[
[3],
[9,20],
[15,7]
]
题目描述
层次遍历二叉树。逐层,从左向右。
思想 辅助队列
解法
# 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]]
"""
res = []
queue = [root]
while queue and root:
row = []
for _ in range(len(queue)):
node = queue.pop(0)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
row.append(node.val)
res.append(row)
return res
103. Binary Tree Zigzag Level Order Traversal
题目描述
zigzag层次遍历二叉树。(逐层,从左向右;然后下一层是从右向左)
例子 略
思想 辅助队列 + Flag翻转标志
解法
# 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 zigzagLevelOrder(self, root):
"""
:type root: TreeNode
:rtype: List[List[int]]
"""
Flag = 1
res = []
queue = [root]
while queue and root:
row = []
for _ in range(len(queue)):
node = queue.pop(0)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
row.append(node.val)
if Flag == 1:
res.append(row)
else:
res.append(row[::-1])
Flag *= (-1)
return res