代码随想录算法训练营第十五天| 637.二叉树的层平均值 429. N 叉树的层序遍历 515. 在每个树行中找最大值

2024-01-09 08:54:29

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;
}
?

文章来源:https://blog.csdn.net/m0_37767445/article/details/135470564
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。