107. 二叉树的层序遍历 II 队列+迭代
102. 二叉树的层序遍历
已解答
中等
相关标签
相关企业
给你二叉树的根节点
root
,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。示例 1:
输入:root = [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]]示例 2:
输入:root = [1] 输出:[[1]]示例 3:
输入:root = [] 输出:[]提示:
- 树中节点数目在范围
[0, 2000]
内-1000 <= Node.val <= 1000
队列+迭代
public List<List<Integer>> levelOrderBottom(TreeNode root) {
//创建结果集
List<List<Integer>> resultList = new ArrayList<>();
if(root == null) return resultList;
Queue<TreeNode> que = new LinkedList<>();
//将根结点放入队列
que.add(root);
while(!que.isEmpty()){
//装载每一层数据的集合
List<Integer> itemList = new ArrayList<>();
int len = que.size(); //len用于判断队列元素是否属于当前层
while(len > 0){
//拿出临时节点
TreeNode tmpNode = que.poll();
itemList.add(tmpNode.val);
if(tmpNode.left != null){que.add(tmpNode.left);}
if(tmpNode.right != null){que.add(tmpNode.right);}
len--;
}
resultList.add(itemList);
}
//反转
Collections.reverse(resultList);
return resultList;
}