Leetcode 103. Binary Tree Zigzag Level Order Traversal 二叉树Zigzag遍历 解题报告
来源:互联网 发布:win10 软件 卸载 残留 编辑:程序博客网 时间:2024/05/16 00:57
1 解题思想
首先这道题和
Leetcode 102. Binary Tree Level Order Traversal 二叉树按层遍历 解题报告
很接近,Zigzag同样是按层遍历,但是区别是对于高度为奇数(从0开始计数的话,则是第1 3 5 7)的层,当层的遍历需要反过来。
做法:
1、采用102题目中的方式,无论是DFS还是BFS都行
2、完成1后,对所有奇数层进行翻转
这题的写法和102不太相同,大家都可以参考
2 原题
Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to right, then right to left for the next level and alternate between).For example:Given binary tree [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7return its zigzag level order traversal as:[ [3], [20,9], [15
3 AC解
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { /** * 采用广度遍历BFS的方式,在维护访问队列的同时维护一个层数的队列 * 当层数发生改变时,将当层的结果加入到结果集当中,此时看层数,如果层数是奇数(从0开始),则先翻转再加入就可以 */ public List<List<Integer>> zigzagLevelOrder(TreeNode root) { List<List<Integer>> result = new ArrayList<List<Integer>>(); if(root==null) return result; Queue<Integer> layers = new LinkedList<Integer>(); Queue<TreeNode> nodes = new LinkedList<TreeNode>(); nodes.add(root); layers.add(0); int lastLayer = 0; List<Integer> tmp = new ArrayList<Integer>(); TreeNode node = null; int layer = 0; while(nodes.isEmpty() == false){ node = nodes.poll(); layer = layers.poll(); if(layer != lastLayer){ if(lastLayer %2 == 1){ Collections.reverse(tmp); } result.add(tmp); tmp = new ArrayList<Integer>(); } tmp.add(node.val); lastLayer = layer; if(node.left != null) { nodes.add(node.left); layers.add(layer+1); } if(node.right != null) { nodes.add(node.right); layers.add(layer+1); } } if(lastLayer %2 == 1){ Collections.reverse(tmp); } result.add(tmp); return result; }}
0 0
- Leetcode 103. Binary Tree Zigzag Level Order Traversal 二叉树Zigzag遍历 解题报告
- [leetcode] 103. Binary Tree Zigzag Level Order Traversal 解题报告
- 【LeetCode】103. Binary Tree Zigzag Level Order Traversal 解题报告
- [Leetcode] 103. Binary Tree Zigzag Level Order Traversal 解题报告
- 【LeetCode】 Binary Tree Zigzag Level Order Traversal 解题报告
- LeetCode(103) Binary Tree Zigzag Level Order Traversal解题报告
- LeetCode 103. Binary Tree Zigzag Level Order Traversal(二叉树之字形遍历)
- 103.leetcode Binary Tree Zigzag Level Order Traversal(medium)[二叉树层次遍历 栈]
- (二叉树z字形层次遍历)LeetCode#103. Binary Tree Zigzag Level Order Traversal
- [LeetCode]103. Binary Tree Zigzag Level Order Traversal--二叉树之字形遍历
- Binary Tree Zigzag Level Order Traversal 之字形遍历二叉树
- [leetcode]103. Binary Tree Zigzag Level Order Traversal@Java解题报告
- Binary Tree Zigzag Level Order Traversal 二叉树按层遍历,zigzag输出@LeetCode
- Binary Tree Zigzag Level Order Traversal 二叉树ZigZag打印
- 【LeetCode】Binary Tree Zigzag Level Order Traversal--- 层序遍历二叉树
- LeetCode(Binary Tree Level Order Traversal, 2,Zigzag)二叉树的层次遍历
- LeetCode OJ 之 Binary Tree Zigzag Level Order Traversal (二叉树的曲线层次遍历)
- Leetcode 103 ,Binary Tree Zigzag Level Order Traversal(二叉树Z形分层遍历)
- 底层架构-远程通讯-Mina
- Asp.Net微信发布菜单,出现“invalid sub button url domain hint”错误
- mysql数据库的创建与删除
- 把自己现在用的系统做成GHO镜像文件的几种方法
- MINA网络通信框架
- Leetcode 103. Binary Tree Zigzag Level Order Traversal 二叉树Zigzag遍历 解题报告
- socket通信框架mina使用详解(一)
- 笔试算法学习--dp规划(最长非递增子序列)
- python_简易ORM
- Qt的ComboBox的美化
- oracle的相关知识
- 解决 Redis on Windows Setup Wizard ended prematurely
- 数据持久化-plist文件的操作
- 没有自制力的人有什么资格谈努力