已解答
中等
相关标签
相关企业
给你二叉树的根节点
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
队列+迭代
java
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> resultList = new ArrayList<>();
if(root == null){
return resultList;
}
//迭代实现
//把根节点装进队列里面
Queue<TreeNode> que = new LinkedList<>();
que.add(root);
//que.offer(root);
while(!que.isEmpty()){
List<Integer> itemList = new ArrayList<>();
int len = que.size();
while(len > 0){
//装配一层的结果集
TreeNode tempNode = que.poll();
//拿到值
itemList.add(tempNode.val);
//拿到值后里面查看当前节点的左右节点是否存在,存在装进去 随着len的实时更新。
//会逐渐遍历 len用于找到队列哪些节点是当前层
if(tempNode.left != null){que.add(tempNode.left);}
if(tempNode.right != null){que.add(tempNode.right);}
len--;
}
resultList.add(itemList);
}
return resultList;
}