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

题目大意为,按照层次逆序输出每一层的节点,很明显用层次遍历即可,之前在Minimum Depth of Binary Tree ——LeetCode这个题目中,也用到了层次遍历,下面先看我写的,也是用upRow,downRow,来记录上一层、下一层的节点数量,upRow--为0时,一层遍历完了。

  public List<List<Integer>> levelOrderBottom(TreeNode root) {
List<Integer> level = new LinkedList<>();
List<List<Integer>> res = new LinkedList<>();
if (root == null)
return res;
ArrayDeque<TreeNode> queue = new ArrayDeque<>();
queue.add(root);
int upRow = 1, downRow = 0;
while (!queue.isEmpty()) {
TreeNode node = queue.getFirst();
queue.removeFirst();
if (node.left != null) {
queue.add(node.left);
downRow++;
}
if (node.right != null) {
queue.add(node.right);
downRow++;
}
upRow--;
level.add(node.val);
if (upRow == 0) {
res.add(0, level);
level = new LinkedList<>();
upRow = downRow;
downRow=0;
}
}
return res;
}

后来发现一种更巧妙的解,就是利用queue的size(),根本不用记录这两个值。

Talk is cheap>>

 public List<List<Integer>> levelOrderBottom2(TreeNode root) {
Queue<TreeNode> queue = new LinkedList<>();
List<List<Integer>> wrapList = new LinkedList<>(); if (root == null) return wrapList;
queue.offer(root);
while (!queue.isEmpty()) {
int levelNum = queue.size();
List<Integer> subList = new LinkedList<>();
       //把一层元素全部取出 
for (int i = 0; i < levelNum; i++) {
TreeNode node = queue.poll();//取出队列第一个元素
if (node.left != null) queue.offer(node.left);
if (node.right != null) queue.offer(node.right);
subList.add(node.val);
}
wrapList.add(0, subList);
}
return wrapList;
}

Binary Tree Level Order Traversal II——LeetCode的更多相关文章

  1. Binary Tree Level Order Traversal II [LeetCode]

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

  2. Binary Tree Level Order Traversal II leetcode java

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

  3. Binary Tree Level Order Traversal II --leetcode C++

    考察点 广度优先遍历--层次遍历 STL内容器的用法 广度优先遍历的时候,首先应该想到的就是借助于队列.还需要在遍历下一层之前保存当前层节点的数量 代码很简单: class Solution { pu ...

  4. LeetCode之“树”:Binary Tree Level Order Traversal && Binary Tree Level Order Traversal II

    Binary Tree Level Order Traversal 题目链接 题目要求: Given a binary tree, return the level order traversal o ...

  5. 【LeetCode】107. Binary Tree Level Order Traversal II (2 solutions)

    Binary Tree Level Order Traversal II Given a binary tree, return the bottom-up level order traversal ...

  6. 35. Binary Tree Level Order Traversal && Binary Tree Level Order Traversal II

    Binary Tree Level Order Traversal OJ: https://oj.leetcode.com/problems/binary-tree-level-order-trave ...

  7. LeetCode_107. Binary Tree Level Order Traversal II

    107. Binary Tree Level Order Traversal II Easy Given a binary tree, return the bottom-up level order ...

  8. Binary Tree Level Order Traversal,Binary Tree Level Order Traversal II

    Binary Tree Level Order Traversal Total Accepted: 79463 Total Submissions: 259292 Difficulty: Easy G ...

  9. 102/107. Binary Tree Level Order Traversal/II

    原文题目: 102. Binary Tree Level Order Traversal 107. Binary Tree Level Order Traversal II 读题: 102. 层序遍历 ...

随机推荐

  1. DM8168 坎坷硬件之路(DDR3)

    新做了8168板,调试DDR3的时候EMIF0遇到了个别数据位出错的问题 DDR3 128MB*8=1GB 我为了測试DDR3的所有空间,把地址存到DDR3中,就是*pdata++=(Uint32)p ...

  2. Struts2 Spring hibernate 整合示例 .

    示例工具:MyEclipse 8.5.Tomcat 6.0.MySql 步骤: 1.创建一个WEB工程,命名为BookShop(名字自己取,此处为示例工程名): 2.导入struts2的核心jar包, ...

  3. Android 开源项目 eoe 社区 Android 客户端(转)

    本文内容 环境 开源项目 eoe 社区 Android 客户端 本文介绍 eoe 社区 Android 客户端.它是一个开源项目,功能相对简单,采用侧边菜单栏.可以学习一下.点击此处查看 GitHub ...

  4. My way to Python - Day05 - 面向对象

    思维导图

  5. asp.net,mvc4,mysql数据库,Ef遇到问题集合

    asp.net  mvc  mysql数据库,在我一个新手自学MVC4时遇到如下的问题,一一解决掉的方法记录如下方便自己日后查看,也为了方便一些像我一样的新手遇到如下问题时,提供参考 问题一: 解决办 ...

  6. 用js生成二维码

    <!doctype html> <html> <meta charset="utf-8"/> <head> <script s ...

  7. HDU3853

    题意:给R*C的迷宫,起点为1,1 终点为R,C 且给定方格所走方向的概率,分别为原地,下边,右边,求到终点的期望. 思路:既然是求到终点的期望,那么DP代表期望,所以DP[i][j]=原地的概率*D ...

  8. 移动页面缩放方法之(一)控制meta法

    <!DOCTYPE HTML> <html lang="zh-cn"> <head> <meta http-equiv="Con ...

  9. java直接输出Excel 页面实现下载

    public String excelDomnload() throws Exception{ try{ /* String path = GlobalKeys.getFunctionConfig(& ...

  10. target,currentTarget,delegateTarget,srcElement

    第一种情况:就是IE9+和其他现代浏览器,支持addEventListener方法.其结果是: this总是等于currentTarget currentTarget总是事件监听者 target总是事 ...