Convert Sorted Array to Binary Search Tree##
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
/**
* 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* insert(vector<int> &v,int start,int end){
TreeNode* node ;
int mid = (start + end) / 2;
node = new TreeNode(v[mid]);
//左右相等 递归结束
if(start == end)
return node;
//插入左节点
if(start < mid)
node->left = insert(v,start,mid - 1);
//插入右节点
if(end > mid)
node->right = insert(v,mid + 1,end);
return node;
}
TreeNode* sortedArrayToBST(vector<int>& nums) {
//判断向量是否为空
if(nums.size() == 0)
return NULL;
TreeNode* head;
head = insert(nums,0,nums.size() - 1);
return head;
}
};
思路很简单,利用递归(发现现在越来越喜欢用递归了)方法每次取出中间的数插入BST。