给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
示例:
二叉树:[3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]
本题比较简单,只需一层层遍历,然后每一层的每个树节点的值都放进数组,然后每一层循环结束,都将这个数组并入要返回的数组里面
复杂度分析
记树上所有节点的个数为 n。
时间复杂度:每个点进队出队各一次,故渐进时间复杂度为 O(n)。
空间复杂度:队列中元素的个数不超过 n 个,故渐进空间复杂度为 O(n)。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
//初始化返回的结果数组
List<List<Integer>> res = new ArrayList<>();
if(root == null)return res;
//初始化队列
Queue<TreeNode> queue = new LinkedList<>();
queue.add(root);
//层序遍历树
while(!queue.isEmpty()){
int n = queue.size();
List<Integer> arr = new ArrayList<>();
for(int i = 0; i < n; i++){
TreeNode node = queue.poll();
arr.add(node.val);
if(node.left != null) queue.add(node.left);
if(node.right != null) queue.add(node.right);
}
res.add(arr);
}
return res;
}
}