Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
=======================================================
题目链接:https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/
题目大意:给定一个排序数组,用它来构建一棵平衡二叉树。
思路:递归构建。
1、计算当前数组长度num。
2、取出第num/2个节点作为头结点,其左边为左子树,右边为右子树。
参考代码:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
TreeNode* sortedArrayToBST(vector<int>& nums) {
return toBST ( nums , 0 , nums.size() - 1 ) ;
}
private :
TreeNode* toBST(vector<int>& nums, int b , int e ) {
int num = e - b + 1 ;
if ( num <= 0 )
return NULL ;
TreeNode * root = new TreeNode ( nums[b+num/2] ) ;
root -> left = toBST ( nums , b , b + num / 2 - 1 ) ;
root -> right = toBST ( nums , b + num / 2 + 1 , e ) ;
return root ;
}
};