LeetCode_107. Binary Tree Level Order Traversal II
2024-09-01 13:42:49
107. Binary Tree Level Order Traversal II
Easy
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,null,null,15,7]
,
3
/ \
9 20
/ \
15 7
return its bottom-up level order traversal as:
[
[15,7],
[9,20],
[3]
]
package leetcode.easy; /**
* Definition for a binary tree node. public class TreeNode { int val; TreeNode
* left; TreeNode right; TreeNode(int x) { val = x; } }
*/
public class BinaryTreeLevelOrderTraversalII {
// DFS solution:
public java.util.List<java.util.List<Integer>> levelOrderBottom1(TreeNode root) {
java.util.List<java.util.List<Integer>> wrapList = new java.util.LinkedList<java.util.List<Integer>>();
levelMaker(wrapList, root, 0);
return wrapList;
} private static void levelMaker(java.util.List<java.util.List<Integer>> list, TreeNode root, int level) {
if (root == null) {
return;
}
if (level >= list.size()) {
list.add(0, new java.util.LinkedList<Integer>());
}
levelMaker(list, root.left, level + 1);
levelMaker(list, root.right, level + 1);
list.get(list.size() - level - 1).add(root.val);
} // BFS solution:
public java.util.List<java.util.List<Integer>> levelOrderBottom2(TreeNode root) {
java.util.Queue<TreeNode> queue = new java.util.LinkedList<TreeNode>();
java.util.List<java.util.List<Integer>> wrapList = new java.util.LinkedList<java.util.List<Integer>>();
if (root == null) {
return wrapList;
}
queue.offer(root);
while (!queue.isEmpty()) {
int levelNum = queue.size();
java.util.List<Integer> subList = new java.util.LinkedList<Integer>();
for (int i = 0; i < levelNum; i++) {
if (queue.peek().left != null) {
queue.offer(queue.peek().left);
}
if (queue.peek().right != null) {
queue.offer(queue.peek().right);
}
subList.add(queue.poll().val);
}
wrapList.add(0, subList);
}
return wrapList;
} @org.junit.Test
public void test() {
TreeNode tn11 = new TreeNode(3);
TreeNode tn21 = new TreeNode(9);
TreeNode tn22 = new TreeNode(20);
TreeNode tn33 = new TreeNode(15);
TreeNode tn34 = new TreeNode(7);
tn11.left = tn21;
tn11.right = tn22;
tn21.left = null;
tn21.right = null;
tn22.left = tn33;
tn22.right = tn34;
tn33.left = null;
tn33.right = null;
tn34.left = null;
tn34.right = null;
System.out.println(levelOrderBottom1(tn11));
System.out.println(levelOrderBottom2(tn11));
}
}
最新文章
- AngularJS 分页
- SBCL 从REPL 中提取lisp代码
- 用Razor做静态页面生成器
- ORACLE手工删除数据库
- 自行架设DNS的操作步骤及相关说明
- BZOJ1631: [Usaco2007 Feb]Cow Party
- Xcode Build Setting Reference
- cocos2dx-lua绑定自定义c++类(二)
- 正确openvSwitch不同种类port认识
- DAU新解
- PDF之pdfkit
- CRM客户关系管理系统(八)
- python爬虫实践(二)——爬取张艺谋导演的电影《影》的豆瓣影评并进行简单分析
- postman中 form-data、x-www-form-urlencoded、raw、binary的区别--转
- git push 失败出现error: src refspec master does not match any.解决方案
- SQL语句 怎么把从一个表中查出来数据插入到另一个表中
- 对Yii2中 yii\web\User的理解,和自建的app\models\User(基础版),frontend\models\User的应用原理
- L2-025 分而治之(图)
- vue - nodejs
- C++等语言中整型int等的取值范围计算方式
热门文章
- Codeforces Round #609 (Div. 2) D. Domino for Young
- NodeJS 开发博客(五) 使用express脚手架
- AOP(execution表达式)
- Django --- 与数据库进行交互
- CSP2019 D1T3 树上的数 (贪心+并查集)
- 编写一个求圆面积的C语言程序
- C# 通过 参数返回 C++ 指针
- / WebAPP开发与小程序 / 步骤一 &#183; 4-5 地图搜索与poi结合(2)
- WPS-系统缺失字体
- 【LGR-059】洛谷7月月赛题解