题目描述:
分析:
- 任意的数据都可以吗?
任意 自己把平衡二叉树的概念引入是错误的理解
recursion
/**
input:不含重复元素的整数数组
output:通过给定的数组构建最大二叉树,并且输出这个树的根节点
最大二叉树定义如下:
1 二叉树的根是数组中的最大元素。
2 左子树是通过数组中最大值左边部分构造出的最大二叉树。(递归)
3 右子树是通过数组中最大值右边部分构造出的最大二叉树。(递归)
**/
func constructMaximumBinaryTree(nums []int) *TreeNode {
if nums == nil {
return nil
}
return constructMaximumTree(nums, 0, len(nums)-1)
}
func constructMaximumTree(nums []int, begin int, end int) *TreeNode {
if begin > end {
return nil
}
maxPos := begin
for i := begin + 1; i <= end; i++ {
if nums[i] > nums[maxPos] {
maxPos = i
}
}
rootNode := TreeNode{Val: nums[maxPos]}
rootNode.Left = constructMaximumTree(nums, begin, maxPos-1)
rootNode.Right = constructMaximumTree(nums, maxPos+1, end)
return &rootNode
}