zoukankan      html  css  js  c++  java
  • 103. 二叉树的锯齿形层次遍历-树(leetcode)

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

    原思路(错误的):

      *)忽略了DFS只能决定 当前节点下一层的遍历顺序, 不能决定本层的所有节点遍历顺序,所以需要用到双向列表的数据结构。

      from collections import deque

      a)用DFS + level 的方法进行BFS遍历

      b)通过 level%2 == 0 来判断应该 helper(node.left,level)  和  helper(node.right,level) 两个谁先

    更正:

      *)本题保存了,作为树的练习,以后多刷几次。

    from collections import deque
    class Solution:
        def zigzagLevelOrder(self, root: TreeNode) -> List[List[int]]:
            res = [] 
            def helper(node,level):
                if not node:
                    return
                if level == len(res):
                    res.append(deque([]))
                if level%2 == 1:
                    res[level].appendleft(node.val)
                elif level%2 == 0:
                    res[level].append(node.val)
                helper(node.left,level+1)
                helper(node.right,level+1)
            helper(root,0)
            new_res = []
            for list_ in res:
                new_res.append([val for val in list_])
            return new_res
     
     
  • 相关阅读:
    Jquery-EasyUI学习2~
    IIS——发布网站
    一致性哈希算法
    利用ZTree链接数据库实现 [权限管理]
    Form表单提交的简要方式
    Redis学习之5种数据类型操作、实现原理及应用场景
    redis对比其余数据库
    ZooKeeper概述(转)
    Zookeeper-Zookeeper可以干什么
    Java内存分配及变量存储位置实例讲解
  • 原文地址:https://www.cnblogs.com/ChevisZhang/p/12456895.html
Copyright © 2011-2022 走看看