1. 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).
  2.  
  3. For example:
  4. Given binary tree {3,9,20,#,#,15,7},
  5. 3
  6. / \
  7. 9 20
  8. / \
  9. 15 7
  10. return its bottom-up level order traversal as:
  11. [
  12. [15,7],
  13. [9,20],
  14. [3]
  15. ]

第二遍方法:

这道题在groupon面经里面有,有一个follow up 是能不能右对齐输出。那就在29行记录每一行的最大size,然后在输出的时候根据最大size补齐空格

  1. /**
  2. * Definition for binary tree
  3. * public class TreeNode {
  4. * int val;
  5. * TreeNode left;
  6. * TreeNode right;
  7. * TreeNode(int x) { val = x; }
  8. * }
  9. */
  10. public class Solution {
  11. public List<List<Integer>> levelOrderBottom(TreeNode root) {
  12. List<List<Integer>> res = new ArrayList<List<Integer>>();
  13. if (root == null) return res;
  14. Queue<TreeNode> queue = new LinkedList<TreeNode>();
  15. queue.offer(root);
  16. while (!queue.isEmpty()) {
  17. List<Integer> item = new ArrayList<Integer>();
  18. int size = queue.size();
  19. for (int i=0; i<size; i++) {
  20. TreeNode cur = queue.poll();
  21. item.add(cur.val);
  22. if (cur.left != null) {
  23. queue.add(cur.left);
  24. }
  25. if (cur.right != null) {
  26. queue.add(cur.right);
  27. }
  28. }
  29. res.add(0, new ArrayList<Integer>(item));
  30. }
  31. return res;
  32. }
  33. }

在Binary Tree Level Order Transversal的基础上难度:20,只需要对最后结果做一个倒序就好。格式是Collections.reverse(List<?> list)

  1. /**
  2. * Definition for binary tree
  3. * public class TreeNode {
  4. * int val;
  5. * TreeNode left;
  6. * TreeNode right;
  7. * TreeNode(int x) { val = x; }
  8. * }
  9. */
  10. public class Solution {
  11. public ArrayList<ArrayList<Integer>> levelOrderBottom(TreeNode root) {
  12. ArrayList<ArrayList<Integer>> lists = new ArrayList<ArrayList<Integer>> ();
  13. if (root == null) return lists;
  14. LinkedList<TreeNode> queue = new LinkedList<TreeNode>();
  15. queue.add(root);
  16. int ParentNumInQ = 1;
  17. int ChildNumInQ = 0;
  18. ArrayList<Integer> list = new ArrayList<Integer>();
  19. while (!queue.isEmpty()) {
  20. TreeNode cur = queue.poll();
  21. list.add(cur.val);
  22. ParentNumInQ--;
  23. if (cur.left != null) {
  24. queue.add(cur.left);
  25. ChildNumInQ++;
  26. }
  27. if (cur.right != null) {
  28. queue.add(cur.right);
  29. ChildNumInQ++;
  30. }
  31. if (ParentNumInQ == 0) {
  32. ParentNumInQ = ChildNumInQ;
  33. ChildNumInQ = 0;
  34. lists.add(list);
  35. list = new ArrayList<Integer>();
  36. }
  37. }
  38. Collections.reverse(lists);
  39. return lists;
  40. }
  41. }

注意38行的写法,Collections.reverse()跟Arrays.sort()函数一样,都是void返回型,然后改变作用在argument上

还有if (root == null) return null;

ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();这样会出错:

Input:{}Output:nullExpected:[]

DFS 做法:

  1. public class Solution {
  2. public List<List<Integer>> levelOrderBottom(TreeNode root) {
  3. List<List<Integer>> wrapList = new LinkedList<List<Integer>>();
  4. levelMaker(wrapList, root, 0);
  5. return wrapList;
  6. }
  7.  
  8. public void levelMaker(List<List<Integer>> list, TreeNode root, int level) {
  9. if(root == null) return;
  10. if(level >= list.size()) {
  11. list.add(0, new LinkedList<Integer>());
  12. }
  13. levelMaker(list, root.left, level+1);
  14. levelMaker(list, root.right, level+1);
  15. list.get(list.size()-level-1).add(root.val);
  16. }
  17. }

Leetcode: Binary Tree Level Order Transversal II的更多相关文章

  1. [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 ...

  2. [leetcode]Binary Tree Level Order Traversal II @ Python

    原题地址:http://oj.leetcode.com/problems/binary-tree-level-order-traversal-ii/ 题意: Given a binary tree, ...

  3. [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 ...

  4. 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 ...

  5. LeetCode - Binary Tree Level Order Traversal II

    题目: Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from ...

  6. Leetcode: Binary Tree Level Order Transversal

    Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, ...

  7. 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 ...

  8. LeetCode Binary Tree Level Order Traversal II (二叉树颠倒层序)

    题意:从左到右统计将同一层的值放在同一个容器vector中,要求上下颠倒,左右不颠倒. 思路:广搜逐层添加进来,最后再反转. /** * Definition for a binary tree no ...

  9. LeetCode:Binary Tree Level Order Traversal I II

    LeetCode:Binary Tree Level Order Traversal Given a binary tree, return the level order traversal of ...

随机推荐

  1. Telnet IMAP Commands Note

    http://busylog.net/telnet-imap-commands-note/  Telnet IMAP Commands Note https://www.cnblogs.com/qiu ...

  2. mysql语句性能分析案例

    写法不一样而功能完全相同的两条 SQL 的在性能方面的差异.示例一需求:取出某个 group(假设 id 为 100)下的用户编号(id),用户昵称(nick_name).用户性别( sexualit ...

  3. loop设备及losetup命令

    1. loop设备介绍 在类 UNIX 系统里,loop 设备是一种伪设备(pseudo-device),或者也可以说是仿真设备.它能使我们像块设备一样访问一个文件.在使用之前,一个 loop 设备必 ...

  4. DependencyProperty属性介绍

    1  DependencyProperty从属属性 1.     从属属性要定义为静态.为了在外部可以绑定,最好定义为Public 2.     从属属性实际上是取代了正常属性的存值变量 3.     ...

  5. 23种设计模式之代理模式(Proxy)

    代理模式是一种对象结构型模式,可为某个对象提供一个代理,并由代理对象控制对原对象的引用.代理模式能够协调调用者和被调用者,能够在一定程度上降低系统的耦合度,其缺点是请求的处理速度会变慢,并且实现代理模 ...

  6. 【BZOJ1187】[HNOI2007]神奇游乐园 插头DP

    [BZOJ1187][HNOI2007]神奇游乐园 Description 经历了一段艰辛的旅程后,主人公小P乘坐飞艇返回.在返回的途中,小P发现在漫无边际的沙漠中,有一块狭长的绿地特别显眼.往下仔细 ...

  7. [吐槽]我为什么讨厌C++

    最近在改currennt的代码,我擦擦擦,实在是忍不了了 C++最恶心的地方在于指针引用与面向对象混用!!TMD各种不匹配 举例: template <typename TDevice> ...

  8. Pyqt图标下载网站

    下载地址: https://www.easyicon.net/ 1.程序中图标建议使用32x32的PNG格式. 2.pyinstaller打包中图标建议使用32x32的ICO格式.

  9. 关于Python的集合set

    网上那么多说创建集合的语句是: >>>a=set([1,2,3]) python 3.6.3,你们真的能运行吗? 我这里报: Traceback (most recent call ...

  10. HDU 3182 - Hamburger Magi - [状压DP]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3182 Time Limit: 2000/1000 MS (Java/Others) Memory Li ...