107二叉树的层次遍历II
程序员文章站
2022-05-20 19:09:51
...
题目描述
给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
思路分析
还是层次遍历的写法,递归非递归都可。
最后用Collections.reverse()翻转list,或者在建立链表时用LinkedList,用addFirst的api,每次都在首部增加list。
代码实现
public List<List<Integer>> levelOrderBottom(TreeNode root) {
Queue<TreeNode> queue = new LinkedList<>();
LinkedList<List<Integer>> arrayLists = new LinkedList<>();
queue.offer(root);
while (!queue.isEmpty()) {
List<Integer> arrayList = new ArrayList<>();
int size = queue.size();
while (size-- > 0) {
TreeNode tmp = queue.poll();
if (tmp == null) {
continue;
}
arrayList.add(tmp.val);
queue.offer(tmp.left);
queue.offer(tmp.right);
}
if (arrayList.size() != 0) {
arrayLists.add(arrayList);
//arrayLists.addFirst(arrayList);
}
}
Collections.reverse(arrayLists);
return arrayLists;
}
上一篇: 112路径总和
下一篇: 迅雷地址正则匹配代码