107. 二叉树的层序遍历 II
给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
示例 1:
输入:root = [3,9,20,null,null,15,7]
输出:[[15,7],[9,20],[3]]
示例 2:
输入:root = [1]
输出:[[1]]
示例 3:
输入:root = []
输出:[]
思考
二叉树的层数遍历,遍历完当前层,需要存储下一层的节点,所以这里我使用Java的队列用来存储。
同时设置 LayerNodes 表示当前层节点数。
正常层次遍历二叉树,最后反转集合即可。
package 力扣;
import java.util.*;
/**
* @author yyq
* @create 2022-04-06 16:40
*/
public class leetcode107 {
public List<List<Integer>> levelOrderBottom(TreeNode root) {
int LayerNodes = 1;
Queue<TreeNode> queue=new LinkedList<>();
List<List<Integer>> lists = new ArrayList<>();
if(root==null) return lists;
queue.add(root);
while (!queue.isEmpty()){
int temp = 0;
List<Integer> list=new ArrayList<>();
while (LayerNodes!=0){
TreeNode treeNode = queue.poll();
list.add(treeNode.val);
if(treeNode.left!=null)
{
queue.add(treeNode.left);
temp++;
}
if(treeNode.right!=null)
{
queue.add(treeNode.right);
temp++;
}
LayerNodes--;
}
lists.add(list);
LayerNodes=temp;
}
Collections.reverse(lists);
return lists;
}
}