654. 最大二叉樹(JavaScript)
阿新 • • 發佈:2019-02-14
給定一個不含重複元素的整數陣列。一個以此陣列構建的最大二叉樹定義如下:
- 二叉樹的根是陣列中的最大元素。
- 左子樹是通過陣列中最大值左邊部分構造出的最大二叉樹。
- 右子樹是通過陣列中最大值右邊部分構造出的最大二叉樹。
通過給定的陣列構建最大二叉樹,並且輸出這個樹的根節點。
Example 1:
輸入: [3,2,1,6,0,5]
輸入: 返回下面這棵樹的根節點:
6
/ \
3 5
\ /
2 0
\
1
注意:
- 給定的陣列的大小在 [1, 1000] 之間。
思路:
遍歷二叉樹或者構建二叉樹都跟遞迴法或者迭代法有關。這次是遞迴法。
使用了 _.max(nums)這個函式。
/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } */ /** * @param {number[]} nums * @return {TreeNode} */ var constructMaximumBinaryTree = function(nums) { if (nums.length === 0) { return null } var max = _.max(nums); var index = nums.indexOf(max); var root = new TreeNode(max); root.left = constructMaximumBinaryTree(nums.slice(0, index)); root.right = constructMaximumBinaryTree(nums.slice(index + 1)); return root; };