【leetCode】Binary Tree Zigzag Level Order Traversal python实现

来源:互联网 发布:淘宝待评价怎么消除 编辑:程序博客网 时间:2024/06/04 20:55

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 = Noneclass 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)
0 0
原创粉丝点击