我的LeetCode代码仓:https://github.com/617076674/LeetCode
原题链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal-ii/description/
题目描述:
知识点:二叉树的层序遍历
思路:和LeetCode102——二叉树的层序遍历一样的思路
只需在LeetCode102——二叉树的层序遍历返回结果之前反转一下listList中的值即可。
时间复杂度是O(n)级别的,其中n为二叉树中的节点个数。由于队中的元素个数最多为(2 ^ h)个,其中h为树的高度,因此空间复杂度为O(2 ^ h)级别的。
JAVA代码:
public class Solution {
public List<List<Integer>> levelOrderBottom(TreeNode root) {
List<List<Integer>> listList = new ArrayList<>();
if(null == root){
return listList;
}
Queue<TreeNode> queue = new LinkedList<>();
queue.add(root);
while(!queue.isEmpty()){
int qSize = queue.size();
List<Integer> list = new ArrayList<>();
for(int i = 0; i < qSize; i++){
TreeNode treeNode = queue.poll();
list.add(treeNode.val);
if(null != treeNode.left){
queue.add(treeNode.left);
}
if(null != treeNode.right){
queue.add(treeNode.right);
}
}
listList.add(list);
}
Collections.reverse(listList);
return listList;
}
}
LeetCode解题报告: