用java代码解决HDU1622
时间: 2024-12-14 16:04:48 AIGC 浏览: 46
好的,针对HDU1622这道题,通常是一个关于二叉树层次遍历的问题,需要求解给定二叉树每个节点的值按层次顺序排列后的数组。这里提供一个基本的Java解决方案:
```java
import java.util.*;
public class Solution {
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int val) {
this.val = val;
}
}
public List<List<Integer>> levelOrder(TreeNode root) {
if (root == null) {
return new ArrayList<>();
}
// 使用层次遍历的队列策略
Deque<TreeNode> queue = new ArrayDeque<>();
queue.offer(root);
List<List<Integer>> res = new ArrayList<>();
while (!queue.isEmpty()) {
// 获取当前层所有节点的值
int layerSize = queue.size();
List<Integer> currentLayer = new ArrayList<>();
for (int i = 0; i < layerSize; i++) {
TreeNode node = queue.poll();
currentLayer.add(node.val);
// 添加子节点到队列,以便下一次迭代
if (node.left != null) {
queue.offer(node.left);
}
if (node.right != null) {
queue.offer(node.right);
}
}
res.add(currentLayer);
}
return res;
}
}
```
这段代码首先定义了一个`TreeNode`类用于表示二叉树节点。`levelOrder`方法中,我们用一个双端队列(deque)`queue`来存储每一层的节点。当队列非空时,我们就不断从队首取出一个节点,记录其值,再将它的左右孩子(如果有)加入队列。直到队列为空,说明已经遍历完所有节点,这时所有的层级都被添加到了结果列表`res`中。
阅读全文
相关推荐




















