Leetcode: Binary Tree Level Order Transversal II
- Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root).
- For example:
- Given binary tree {3,9,20,#,#,15,7},
- 3
- / \
- 9 20
- / \
- 15 7
- return its bottom-up level order traversal as:
- [
- [15,7],
- [9,20],
- [3]
- ]
第二遍方法:
这道题在groupon面经里面有,有一个follow up 是能不能右对齐输出。那就在29行记录每一行的最大size,然后在输出的时候根据最大size补齐空格
- /**
- * Definition for binary tree
- * public class TreeNode {
- * int val;
- * TreeNode left;
- * TreeNode right;
- * TreeNode(int x) { val = x; }
- * }
- */
- public class Solution {
- public List<List<Integer>> levelOrderBottom(TreeNode root) {
- List<List<Integer>> res = new ArrayList<List<Integer>>();
- if (root == null) return res;
- Queue<TreeNode> queue = new LinkedList<TreeNode>();
- queue.offer(root);
- while (!queue.isEmpty()) {
- List<Integer> item = new ArrayList<Integer>();
- int size = queue.size();
- for (int i=0; i<size; i++) {
- TreeNode cur = queue.poll();
- item.add(cur.val);
- if (cur.left != null) {
- queue.add(cur.left);
- }
- if (cur.right != null) {
- queue.add(cur.right);
- }
- }
- res.add(0, new ArrayList<Integer>(item));
- }
- return res;
- }
- }
在Binary Tree Level Order Transversal的基础上难度:20,只需要对最后结果做一个倒序就好。格式是Collections.reverse(List<?> list)
- /**
- * Definition for binary tree
- * public class TreeNode {
- * int val;
- * TreeNode left;
- * TreeNode right;
- * TreeNode(int x) { val = x; }
- * }
- */
- public class Solution {
- public ArrayList<ArrayList<Integer>> levelOrderBottom(TreeNode root) {
- ArrayList<ArrayList<Integer>> lists = new ArrayList<ArrayList<Integer>> ();
- if (root == null) return lists;
- LinkedList<TreeNode> queue = new LinkedList<TreeNode>();
- queue.add(root);
- int ParentNumInQ = 1;
- int ChildNumInQ = 0;
- ArrayList<Integer> list = new ArrayList<Integer>();
- while (!queue.isEmpty()) {
- TreeNode cur = queue.poll();
- list.add(cur.val);
- ParentNumInQ--;
- if (cur.left != null) {
- queue.add(cur.left);
- ChildNumInQ++;
- }
- if (cur.right != null) {
- queue.add(cur.right);
- ChildNumInQ++;
- }
- if (ParentNumInQ == 0) {
- ParentNumInQ = ChildNumInQ;
- ChildNumInQ = 0;
- lists.add(list);
- list = new ArrayList<Integer>();
- }
- }
- Collections.reverse(lists);
- return lists;
- }
- }
注意38行的写法,Collections.reverse()跟Arrays.sort()函数一样,都是void返回型,然后改变作用在argument上
还有if (root == null) return null;
ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();这样会出错:
Input:{}Output:nullExpected:[]
DFS 做法:
- public class Solution {
- public List<List<Integer>> levelOrderBottom(TreeNode root) {
- List<List<Integer>> wrapList = new LinkedList<List<Integer>>();
- levelMaker(wrapList, root, 0);
- return wrapList;
- }
- public void levelMaker(List<List<Integer>> list, TreeNode root, int level) {
- if(root == null) return;
- if(level >= list.size()) {
- list.add(0, new LinkedList<Integer>());
- }
- levelMaker(list, root.left, level+1);
- levelMaker(list, root.right, level+1);
- list.get(list.size()-level-1).add(root.val);
- }
- }
Leetcode: Binary Tree Level Order Transversal II的更多相关文章
- [LeetCode] Binary Tree Level Order Traversal II 二叉树层序遍历之二
Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left ...
- [leetcode]Binary Tree Level Order Traversal II @ Python
原题地址:http://oj.leetcode.com/problems/binary-tree-level-order-traversal-ii/ 题意: Given a binary tree, ...
- [Leetcode] Binary tree level order traversal ii二叉树层次遍历
Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left ...
- LeetCode——Binary Tree Level Order Traversal II
Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left ...
- LeetCode - Binary Tree Level Order Traversal II
题目: Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from ...
- Leetcode: Binary Tree Level Order Transversal
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, ...
- LeetCode "Binary Tree Level Order Traversal II" using DFS
BFS solution is intuitive - here I will show a DFS based solution: /** * Definition for a binary tre ...
- LeetCode Binary Tree Level Order Traversal II (二叉树颠倒层序)
题意:从左到右统计将同一层的值放在同一个容器vector中,要求上下颠倒,左右不颠倒. 思路:广搜逐层添加进来,最后再反转. /** * Definition for a binary tree no ...
- LeetCode:Binary Tree Level Order Traversal I II
LeetCode:Binary Tree Level Order Traversal Given a binary tree, return the level order traversal of ...
随机推荐
- Telnet IMAP Commands Note
http://busylog.net/telnet-imap-commands-note/ Telnet IMAP Commands Note https://www.cnblogs.com/qiu ...
- mysql语句性能分析案例
写法不一样而功能完全相同的两条 SQL 的在性能方面的差异.示例一需求:取出某个 group(假设 id 为 100)下的用户编号(id),用户昵称(nick_name).用户性别( sexualit ...
- loop设备及losetup命令
1. loop设备介绍 在类 UNIX 系统里,loop 设备是一种伪设备(pseudo-device),或者也可以说是仿真设备.它能使我们像块设备一样访问一个文件.在使用之前,一个 loop 设备必 ...
- DependencyProperty属性介绍
1 DependencyProperty从属属性 1. 从属属性要定义为静态.为了在外部可以绑定,最好定义为Public 2. 从属属性实际上是取代了正常属性的存值变量 3. ...
- 23种设计模式之代理模式(Proxy)
代理模式是一种对象结构型模式,可为某个对象提供一个代理,并由代理对象控制对原对象的引用.代理模式能够协调调用者和被调用者,能够在一定程度上降低系统的耦合度,其缺点是请求的处理速度会变慢,并且实现代理模 ...
- 【BZOJ1187】[HNOI2007]神奇游乐园 插头DP
[BZOJ1187][HNOI2007]神奇游乐园 Description 经历了一段艰辛的旅程后,主人公小P乘坐飞艇返回.在返回的途中,小P发现在漫无边际的沙漠中,有一块狭长的绿地特别显眼.往下仔细 ...
- [吐槽]我为什么讨厌C++
最近在改currennt的代码,我擦擦擦,实在是忍不了了 C++最恶心的地方在于指针引用与面向对象混用!!TMD各种不匹配 举例: template <typename TDevice> ...
- Pyqt图标下载网站
下载地址: https://www.easyicon.net/ 1.程序中图标建议使用32x32的PNG格式. 2.pyinstaller打包中图标建议使用32x32的ICO格式.
- 关于Python的集合set
网上那么多说创建集合的语句是: >>>a=set([1,2,3]) python 3.6.3,你们真的能运行吗? 我这里报: Traceback (most recent call ...
- HDU 3182 - Hamburger Magi - [状压DP]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3182 Time Limit: 2000/1000 MS (Java/Others) Memory Li ...