- 每天一题LeetCode【第54天】
- 【1错1对0】Binary Tree Level Order T
- 107 Binary Tree Level Order Trav
- Leetcode - Binary Tree Level Ord
- [leetcode] 102. Binary Tree Leve
- Leetcode 102. Binary Tree Level
- LeetCode 102 Binary Tree Level O
- 102. Binary Tree Level Order Tra
- 刷题No10 Leetcode Binary Tree Leve
- 102. Binary Tree Level Order Tra
https://leetcode.com/problems/binary-tree-level-order-traversal-ii/
日期 | 是否一次通过 | comment |
---|---|---|
2019-01-21 13:23 | 否 | 思路太僵 |
2019-01-22 00:00 | Y | 理解分层遍历 |

(来源:https://leetcode.com/problems/binary-tree-level-order-traversal-ii/)
关键:Binary Tree Level Order Traversal ,层级遍历。只要把每层的结果插在最前面,因此LindedList这个结构非常适合
1. 非递归
class Solution {
public List<List<Integer>> levelOrderBottom(TreeNode root) {
List<List<Integer>> result = new LinkedList<>();
if(root == null) {
return result;
}
Queue<TreeNode> nodeQ = new LinkedList<>();
nodeQ.offer(root);
while(!nodeQ.isEmpty()) {
int qLen = nodeQ.size();
List<Integer> levelList = new ArrayList<>();
for(int i=0; i<qLen; i++) {
TreeNode node = nodeQ.poll();
levelList.add(node.val);
if(node.left != null) {
nodeQ.offer(node.left);
}
if(node.right != null) {
nodeQ.offer(node.right);
}
}
result.add(0, levelList);
}
return result;
}
}
2.递归
class Solution {
public List<List<Integer>> levelOrderBottom(TreeNode root) {
List<List<Integer>> result = new LinkedList<>();
if(root == null) {
return result;
}
helper(root, result, 0);
return result;
}
private void helper(TreeNode root, List<List<Integer>> result, int level) {
if(root == null) {
return;
}
if(level >= result.size()) {
result.add(0, new LinkedList<>());
}
result.get(result.size()-1 - level).add(root.val);
if(root.left != null) {
helper(root.left, result, level+1);
}
if(root.right != null) {
helper(root.right, result, level+1);
}
}
}
网友评论