題目
給定一個二叉樹,返回其節點值自底向上的層次遍歷。 (即按從葉子節點所在層到根節點所在的層,逐層從左向右遍歷)
例如:
給定二叉樹 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回其自底向上的層次遍歷爲:
[
[15,7],
[9,20],
[3]
]
方案:
class Solution {
public List<List<Integer>> levelOrderBottom(TreeNode root) {
int size = 1;
TreeNode tmp;
LinkedList<TreeNode> list = new LinkedList<>();
List<List<Integer>> res = new LinkedList<>();
if(root==null) return res;
list.add(root);
while(list.size()>0){
List<Integer> nums = new LinkedList<>();
size = list.size();
for(int i =0;i<size;i++){
tmp = list.removeFirst();
if(tmp.left!=null) {list.add(tmp.left);}
if(tmp.right!=null) {list.add(tmp.right);}
nums.add(tmp.val);
}
res.add(0,nums);
}
return res;
}
}
複雜度計算