【Leetcode】【python】Binary Tree Zigzag Level Order Traversal
来源:互联网 发布:mac区域截屏保存在哪里 编辑:程序博客网 时间:2024/06/15 07:34
题目大意
按之字形遍历二叉树(一正一反)
解题思路
来自:链接
解题思路:这道题和上一题层序遍历那道题差不多,区别只是在于奇数层的节点要翻转过来存入数组。
代码:
代码
BFS
class Solution(object): def zigzagLevelOrder(self, root): tree = [] if not root: return tree curr_level = [root] direction = 'L' # print(type(root), type(curr_level)) # (<class 'precompiled.treenode.TreeNode'>, <type 'list'>) # print(curr_level) # 作为list,却并不能遍历整个树 while curr_level: level_list = [] next_level = [] for temp in curr_level: level_list.append(temp.val) if temp.left: next_level.append(temp.left) if temp.right: next_level.append(temp.right) if direction == 'L': tree.append(level_list) direction = 'R' else: tree.append(level_list[::-1]) direction = 'L' curr_level = next_level return tree
DFS
# Definition for a binary tree node# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: # @param root, a tree node # @return a list of lists of integers def preorder(self, root, level, res): if root: if len(res) < level+1: res.append([]) if level % 2 == 0: res[level].append(root.val) else: res[level].insert(0, root.val) # 向0位置插入 self.preorder(root.left, level+1, res) self.preorder(root.right, level+1, res) def zigzagLevelOrder(self, root): res=[] self.preorder(root, 0, res) return res
总结
- insert()方法语法:
list.insert(index, obj)
参数
index – 对象 obj 需要插入的索引位置。
obj – 要插入列表中的对象。 - tree.append(level_list[::-1])将数组倒序插入
阅读全文
0 0
- 103. Binary Tree Zigzag Level Order Traversal Leetcode Python
- 【leetCode】Binary Tree Zigzag Level Order Traversal python实现
- 【Leetcode】【python】Binary Tree Zigzag Level Order Traversal
- LeetCode: Binary Tree Zigzag Level Order Traversal
- [LeetCode]Binary Tree Zigzag Level Order Traversal
- LeetCode Binary Tree Zigzag Level Order Traversal
- [Leetcode] Binary Tree Zigzag Level Order Traversal
- Leetcode: Binary Tree Zigzag Level Order Traversal
- LeetCode Binary Tree Zigzag Level Order Traversal
- [LeetCode] Binary Tree Zigzag Level Order Traversal
- [Leetcode] Binary Tree Zigzag Level Order Traversal
- 【leetcode】Binary Tree Zigzag Level Order Traversal
- [LeetCode]Binary Tree Zigzag Level Order Traversal
- [Leetcode]Binary Tree Zigzag Level Order Traversal
- [leetcode]Binary Tree Zigzag Level Order Traversal
- Leetcode: Binary Tree Zigzag Level Order Traversal
- LeetCode-Binary Tree Zigzag Level Order Traversal
- [leetcode] Binary Tree Zigzag Level Order Traversal
- java实用类总结
- SSH 整合 (Maven)
- HDU-1159 Common subsequence
- [单页面]Django打造在线教育平台(七)--网页显示数据库内容
- Windows下的BASH真是奇葩
- 【Leetcode】【python】Binary Tree Zigzag Level Order Traversal
- 计算编码的整数方法
- vim跳转命令
- vim ctags and quickfix
- Ubuntu 16.04 RTL8111/8168/8411 不能上网 经常断网解决办法 Author 时鹏亮 | 11/18/2016 = =这奇葩情况发生在从14.04升级到16.04之后,开始以
- Factory and Decorator (工厂模式与装饰者模式)
- 内存溢出的多种原因及优化方法
- okhttp3使用
- 网络安全法与LogSec日志安全大数据审计平台