给你二叉树的根节点 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
import java.util.*;
public class LevelReverseWithLoop {
public static void main(String[] args) {
TreeNode root = new TreeNode(5);
root.left = new TreeNode(6);
root.right = new TreeNode(8);
root.left.left = null;
root.left.right = null;
root.right.left = new TreeNode(15);
root.right.right = new TreeNode(7);
levelOrder(root);
}
public static List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> result = new ArrayList<>();
if (root == null) {
return result;
}
Queue<TreeNode> queue = new LinkedList<>();
queue.add(root);
while(queue.size() > 0) {
Queue<TreeNode> curQueue = new LinkedList<>();
while(queue.size() > 0) {
curQueue.add(queue.poll());
}
List<Integer> levelList = new ArrayList<>();
while(curQueue.size() > 0) {
TreeNode cur = curQueue.poll();
levelList.add(cur.val);
if (cur.left != null) {
queue.add(cur.left);
}
if (cur.right != null) {
queue.add(cur.right);
}
}
result.add(levelList);
}
return result;
}
public static class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode() {
}
TreeNode(int val) {
this.val = val;
}
TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}
}