- 分类:Tree
- 时间复杂度: O(n) 这种把树的节点都遍历一遍的情况时间复杂度为O(n)
- 空间复杂度: O(h) 树的节点的深度
103. Binary Tree Zigzag Level Order Traversal
Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to right, then right to left for the next level and alternate between).
For example:
Given binary tree [3,9,20,null,null,15,7]
,
3
/ \
9 20
/ \
15 7
return its zigzag level order traversal as:
[
[3],
[20,9],
[15,7]
]
代码:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
dict_={}
def zigzagLevelOrder(self, root: 'TreeNode') -> 'List[List[int]]':
self.dict_={}
res=[]
if root==None:
return res
self.helper(root,0)
i=0
while i in self.dict_:
if i%2==1:
self.dict_[i].reverse()
res.append(self.dict_[i])
i+=1
return res
def helper(self,root,level):
if root==None:
return
if level not in self.dict_:
self.dict_[level]=[]
self.dict_[level].append(root.val)
self.helper(root.left,level+1)
self.helper(root.right,level+1)
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
dict_={}
def zigzagLevelOrder(self, root: 'TreeNode') -> 'List[List[int]]':
self.dict_={}
res=[]
if root==None:
return res
self.helper(root,0)
i=0
while i in self.dict_:
res.append(self.dict_[i])
i+=1
return res
def helper(self,root,level):
if root==None:
return
if level not in self.dict_:
self.dict_[level]=[]
if level%2==0:
self.dict_[level].append(root.val)
else:
self.dict_[level].insert(0,root.val)
self.helper(root.left,level+1)
self.helper(root.right,level+1)
讨论:
1.篮子王和GTH都是用queue做的,不是很看得懂他们写的啥。。。= 。=但是好像用python写挺简单的