题目描述


题解
import java.util.ArrayList;
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> res = new ArrayList<List<Integer>>();
if (root == null)
return res;
LinkedList<TreeNode> q_cur = new LinkedList<TreeNode>();
LinkedList<TreeNode> q_next = new LinkedList<TreeNode>();
q_next.offer(root);
while (!q_next.isEmpty()) {
while (!q_next.isEmpty()) {
TreeNode node = q_next.remove();
q_cur.add(node);
}
ArrayList<Integer> level = new ArrayList<Integer>();
while (!q_cur.isEmpty()) {
TreeNode node = q_cur.remove();
level.add(node.val);
if (node.left != null)
q_next.add(node.left);
if (node.right != null)
q_next.add(node.right);
}
res.add(level);
}
return res;
}
}
import java.util.ArrayList;
import java.util.LinkedList;
public class Solution {
ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {
ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>;
LinkedList<TreeNode> q_cur = new LinkedList<>();
LinkedList<TreeNode> q_next = new LinkedList<>();
q_next.offer(pRoot);
while (!q_next.isEmpty()) {
while (!q_next.isEmpty()) {
TreeNode node = q_next.remove();
q_cur.add(node);
}
ArrayList<Integer> level = new ArrayList<>();
while (!q_cur.isEmpty()) {
TreeNode node = q_cur.remove();
level.add(node.val);
if (node.left != null)
q_next.add(node.left);
if (node.right != null)
q_next.add(node.right);
}
res.add(level);
}
return res;
}
}
//////////////////////////////// 计数分割 ////////////////////////
// 比较巧妙的方法
// 设置一个计数位level_count,在根结点出队,放子结点入队后,队伍里的
// 长度即为子结点一层的结点个数。
// 遍历一个结点,计数位减1,计数位耗尽表示当前层遍历完毕。
// 力扣
// 执行用时:1 ms, 在所有 Java 提交中击败了92.86%的用户
// 内存消耗:38.5 MB, 在所有 Java 提交中击败了85.92%的用户
import java.util.ArrayList
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> res = new ArrayList<List<Integer>>()
if (root == null)
return res
int level_count = 0
LinkedList<TreeNode> q = new LinkedList<>()
q.offer(root)
while (!q.isEmpty()) {
ArrayList<Integer> level = new ArrayList<>()
level_count = q.size()
while (level_count > 0) {
TreeNode node = q.remove()
level.add(node.val)
if (node.left != null)
q.add(node.left)
if (node.right != null)
q.add(node.right)
level_count--
}
res.add(level)
// System.out.println(res.toString())
}
return res
}
}
// 牛客
// 运行时间:17ms
// 占用内存:9956k
import java.util.ArrayList
import java.util.LinkedList
public class Solution {
ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {
ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>()
if (pRoot == null)
return res
int level_count = 1
LinkedList<TreeNode> q = new LinkedList<>()
q.offer(pRoot)
while (!q.isEmpty()) {
ArrayList<Integer> level = new ArrayList<>()
level_count = q.size()
while (level_count > 0) {
TreeNode node = q.remove()
level.add(node.val)
if (node.left != null)
q.add(node.left)
if (node.right != null)
q.add(node.right)
level_count--
}
res.add(level)
}
return res
}
}