// 递归方法,用于在nums数组的指定范围[left, right]构建最大二叉树。 public TreeNode construct(int[] nums, int left, int right){ // 如果左边界大于右边界,说明子数组为空,返回null。 if (left > right) { returnnull; }
// 寻找当前子数组中的最大值及其索引。 int best = left; // 从left开始,初始化最大值的索引。 for (int i = left + 1; i <= right; ++i) { if (nums[i] > nums[best]) { // 如果发现更大的数,则更新索引。 best = i; } }
// 创建当前的根节点,其值为子数组的最大值。 TreeNode node = new TreeNode(nums[best]);
// 递归构建左子树,包含最大值左边的子数组。 node.left = construct(nums, left, best - 1);
// 递归构建右子树,包含最大值右边的子数组。 node.right = construct(nums, best + 1, right);