TreeNode constructTree(Integer[] nums)的完整代码
时间: 2024-10-21 07:04:47 浏览: 15
`TreeNode constructTree(Integer[] nums)` 是一个用于构建二叉树的函数,通常这个函数会接受一个整数数组作为输入,其中每个元素代表从根节点到某个叶子节点的路径上节点的值。在这个场景中,`nums` 数组通常是层次遍历(即先序遍历)的结果。
下面是一个简单的 Java 示例,假设 `TreeNode` 是一个包含整数值的表示二叉树节点的对象,它有一个整数值 `val` 和两个指向左右子节点的引用 `left` 和 `right`:
```java
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
// 构造器省略...
}
public TreeNode constructTree(Integer[] nums) {
if (nums == null || nums.length == 0) {
return null; // 如果数组为空,返回空树
}
TreeNode root = new TreeNode(nums[0]); // 根据第一个元素创建根节点
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root); // 将根节点入队
for (int i = 1; i < nums.length; i++) {
int nodeVal = nums[i];
TreeNode currentNode = queue.poll(); // 出队当前节点
if (nodeVal != -1) { // 如果遇到非空节点值
currentNode.left = new TreeNode(nodeVal); // 创建左子节点并连接
queue.offer(currentNode.left);
}
if (i + 1 < nums.length && nums[i + 1] != -1) { // 遇到右子节点
currentNode.right = new TreeNode(nums[i + 1]); // 创建右子节点并连接
queue.offer(currentNode.right);
i++; // 跳过右子节点的值,因为它已经在下一次循环处理
}
}
return root; // 返回构建完成的根节点
}
```
注意这里假设 `nums` 的最后一个元素为 `-1` 或者不存在,表示遍历结束。这个函数采用了层序遍历的思想,并使用了队列来辅助操作。
阅读全文