最大二叉树
目录
1. 题目
注意上面的标注
2. 代码
l > r
:- 因为还是向中间靠拢
- 注意是:
l < r
/**
* @param {number[]} nums
* @return {TreeNode}
*/
var constructMaximumBinaryTree = function (nums) {
return build(nums, 0, nums.length - 1);
function build(nums, l, r) {
if (l > r) return null;
let index = -1;
let val = -1;
for (let i = l; i <= r; i++) {
if (nums[i] > val) {
val = nums[i];
index = i;
}
}
let root = new TreeNode(val, null, null);
root.left = build(nums, l, index - 1);
root.right = build(nums, index + 1, r);
return root;
}
};
3. 错误记录
注意题意:不是构造二叉树搜索树,
- 规则是从数组中找最大值
- 从最大值的左边:
- 寻找最大值构造左树
- 从最大值的右边:
- 寻找最大值构造右树
- 从最大值的左边: