本文共 1310 字,大约阅读时间需要 4 分钟。
为了解决这个问题,我们需要对二叉树进行层次遍历(也称为广度优先搜索),按层次从左到右收集节点的值。
我们可以使用队列来实现层次遍历。队列的作用是记录当前需要处理的节点,每次从队列中取出一个节点并处理其左孩子和右孩子,直到队列为空为止。具体步骤如下:
import java.util.ArrayList;import java.util.LinkedList;import java.util.List;import java.util.Queue;public class Solution { private static TreeNode root; public static List > levelOrder(TreeNode root) { List > res = new ArrayList<>(); if (root == null) { return res; } Queue queue = new LinkedList<>(); queue.offer(root); while (!queue.isEmpty()) { int levelSize = queue.size(); List currentLevel = new ArrayList<>(); for (int i = 0; i < levelSize; i++) { TreeNode node = queue.poll(); currentLevel.add(node.val); if (node.left != null) { queue.offer(node.left); } if (node.right != null) { queue.offer(node.right); } } res.add(currentLevel); } return res; }}
LinkedList作为队列,方便快速插入和删除操作。这种方法确保了每个节点按层次从左到右处理,并且高效地使用了队列结构,实现了广度优先搜索。
转载地址:http://xthfk.baihongyu.com/