Binary Tree Zigzag Level Order Traversal
原题链接
Binary Tree Zigzag Level Order Traversal
实现原理解析
层次遍历即可,对于偶数层的做反向
python代码实现
import copy
# 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 __init__(self):
self.result = []
def zigzagLevelOrder(self, root):
"""
:type root: TreeNode
:rtype: List[List[int]]
"""
if root is None:
return []
else:
rootLevel =[root]
self.result.append(rootLevel)
self.levelSearch(rootLevel)
for i in xrange(len(self.result)):
if i%2 == 1:
self.result[i].reverse()
self.result[i] = [each.val for each in self.result[i]]
return self.result
def levelSearch(self, upLevelNodes):
"""
:param upLevelNodes:
:return:
"""
ret = []
if len(upLevelNodes) == 0:
self.result.pop()
return
for eachNode in upLevelNodes:
if eachNode.left is not None:
ret.append(eachNode.left)
if eachNode.right is not None:
ret.append(eachNode.right)
if len(ret) == 0:
return
self.result.append(ret)
self.levelSearch(ret)