• 103. 二叉树的锯齿形层次遍历


    103. 二叉树的锯齿形层次遍历

    题意

    给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。

    解题思路

    和题目102一致;

    实现

    class Solution(object):
       def zigzagLevelOrder(self, root):
           """
          :type root: TreeNode
          :rtype: List[List[int]]
          """
           result = []
           if not root:
               return result

           def helper(node, depth, res, is_reverse):
               """
              利用前序遍历的思想
              """
               if not node:
                   return
               # 超出递归的长度表明是新的一层,则新添加数组
               if depth >= len(res):
                   res.append([])
               # 可以理解成每个node都能对应到树的depth
               if is_reverse:
                   res[depth].insert(0, node.val)
               else:
                   res[depth].append(node.val)
               if node.left:
                   helper(node.left, depth+1, res, not is_reverse)
               if node.right:
                   helper(node.right, depth+1, res, not is_reverse)

           helper(root, 0, result, False)
           return result
  • 相关阅读:
    创建本地源,使用yum install
    查找SCAN大量块的一个sql
    好的代码像首诗,差的代码像坨屎。
    ps
    eclipse程序正确运行却有红叉
    JS中文乱码解决方案
    初学JQuery
    初学JQuery 2
    大神的电脑软件
    eclipse导入已存在于workspace的项目
  • 原文地址:https://www.cnblogs.com/George1994/p/10605061.html
Copyright © 2020-2023  润新知