构造树
其实我对树的这种递归,有时候还是不能理解其内部逻辑,但是。。。直接按照题目意思来写代码,貌似也能行
这一题就是典型的,按照题目意思来写代码
var constructMaximumBinaryTree = function (nums) {
if (nums.length === 0) return null
let maxIndex = -1
let maxNum = -1
// 找到最大的节点值以及其索引
for (let i = 0; i < nums.length; ++i) {
if (maxNum < nums[i]) {
maxNum = nums[i]
maxIndex = i
}
}
// 新建节点
let root = new TreeNode(maxNum)
// 递归构造左右子树
root.left = constructMaximumBinaryTree(nums.slice(0, maxIndex))
root.right = constructMaximumBinaryTree(nums.slice(maxIndex + 1))
return root
};