Skip to content

Commit cd094e7

Browse files
committed
solve 107.二叉树的层次遍历-ii
1 parent cdf49ab commit cd094e7

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
/*
2+
* @lc app=leetcode.cn id=107 lang=java
3+
*
4+
* [107] 二叉树的层次遍历 II
5+
*
6+
* https://leetcode-cn.com/problems/binary-tree-level-order-traversal-ii/description/
7+
*
8+
* algorithms
9+
* Easy (65.50%)
10+
* Likes: 235
11+
* Dislikes: 0
12+
* Total Accepted: 58.9K
13+
* Total Submissions: 89.8K
14+
* Testcase Example: '[3,9,20,null,null,15,7]'
15+
*
16+
* 给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
17+
*
18+
* 例如:
19+
* 给定二叉树 [3,9,20,null,null,15,7],
20+
*
21+
* ⁠ 3
22+
* ⁠ / \
23+
* ⁠ 9 20
24+
* ⁠ / \
25+
* ⁠ 15 7
26+
*
27+
*
28+
* 返回其自底向上的层次遍历为:
29+
*
30+
* [
31+
* ⁠ [15,7],
32+
* ⁠ [9,20],
33+
* ⁠ [3]
34+
* ]
35+
*
36+
*
37+
*/
38+
39+
// @lc code=start
40+
/**
41+
* Definition for a binary tree node.
42+
* public class TreeNode {
43+
* int val;
44+
* TreeNode left;
45+
* TreeNode right;
46+
* TreeNode(int x) { val = x; }
47+
* }
48+
*/
49+
class Solution {
50+
public List<List<Integer>> levelOrderBottom(TreeNode root) {
51+
List<List<Integer>> result = new ArrayList<>();
52+
if (root == null) {
53+
return result;
54+
}
55+
56+
Queue<TreeNode> queue = new LinkedList<>();
57+
queue.offer(root);
58+
59+
while (!queue.isEmpty()) {
60+
List<Integer> level = new ArrayList<>();
61+
int size = queue.size();
62+
for (int i = 0; i < size; i++) {
63+
TreeNode node = queue.poll();
64+
level.add(node.val);
65+
if (node.left != null) {
66+
queue.offer(node.left);
67+
}
68+
if (node.right != null) {
69+
queue.offer(node.right);
70+
}
71+
}
72+
result.add(0, level);
73+
}
74+
75+
return result;
76+
}
77+
}
78+
// @lc code=end
79+

0 commit comments

Comments
 (0)