1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| package main
func constructMaximumBinaryTree(nums []int) *TreeNode { return build(nums, 0, len(nums)-1) }
func build(nums []int, left, right int) *TreeNode { if left > right { return nil } maxIndex := left for i := left; i <= right; i++ { if nums[i] > nums[maxIndex] { maxIndex = i } } root := &TreeNode{Val: nums[maxIndex]} root.Left = build(nums, left, maxIndex-1) root.Right = build(nums, maxIndex+1, right) return root }
|