429.N叉树的层序遍历
public List<List<Integer>> levelOrder(Node root) {
? ? List<List<Integer>> result = new ArrayList<>();
? ? if (root == null) {
? ? ? ? return result;
? ? }
? ? Queue<Node> queue = new LinkedList<>();
? ? queue.offer(root);
? ? while (!queue.isEmpty()) {
? ? ? ? int size = queue.size();
? ? ? ? List<Integer> levelList = new ArrayList<>();
? ? ? ? for (int i = 0; i < size; i++) {
? ? ? ? ? ? Node node = queue.poll();
? ? ? ? ? ? levelList.add(node.val);
? ? ? ? ? ? for (Node child : node.children) {
? ? ? ? ? ? ? ? queue.offer(child);
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? result.add(levelList);
? ? }
? ? return result;
}
515. 在每个树行中找最大值
public List<Integer> largestValues(TreeNode root) {
? ? Integer max = new Integer(0);
? ? List<Integer> res = new ArrayList<>();
? ? if (root == null) {
? ? ? ? return res;
? ? }
? ? Queue<TreeNode> queue = new LinkedList<>();
? ? queue.offer(root);
? ? while (!queue.isEmpty()) {
? ? ? ? int size = queue.size();
? ? ? ? List<Integer> level = new ArrayList<>();
? ? ? ? for (int i = 0; i < size; i++) {
? ? ? ? ? ? TreeNode cur = queue.poll();
? ? ? ? ? ? level.add(cur.val);
? ? ? ? ? ? if (cur.left != null) {
? ? ? ? ? ? ? ? queue.offer(cur.left);
? ? ? ? ? ? }
? ? ? ? ? ? if (cur.right != null) {
? ? ? ? ? ? ? ? queue.offer(cur.right);
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? if (level.size() != 0) {
? ? ? ? ? ? max = level.get(0);
? ? ? ? }
? ? ? ? for (int i = 0; i < level.size(); i++) {
? ? ? ? ? ? if (level.get(i) > max) {
? ? ? ? ? ? ? ? max = level.get(i);
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? res.add(max);
? ? }
? ? return res;
}
?