描述
给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)
例如:
给定的二叉树是{3,9,20,#,#,15,7},
该二叉树之字形层序遍历的结果是
[
[3],
[20,9],
[15,7]
]
示例1
输入:
{1,#,2}
返回值:
[[1],[2]]
深搜,python定义二维数组好麻烦
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
#
#
# @param root TreeNode类
# @return int整型二维数组
#
tree = {}
def BFS(root: TreeNode, level: int):
if root == None:
return
if tree.get(level, -1) == -1:
tmp = []
tree[level] = tmp
tree[level].append(root.val)
BFS(root.left, level + 1)
BFS(root.right, level + 1)
class Solution:
def zigzagLevelOrder(self , root ):
BFS(root, 0)
result = []
for i in tree.keys():
tmp = tree[i]
if i % 2 == 1:
tmp.reverse()
result.append(tmp)
return result
# write code here