將一個按照升序排列的有序數(shù)組毛雇,轉(zhuǎn)換為一棵高度平衡二叉搜索樹。
本題中,一個高度平衡二叉樹是指一個二叉樹每個節(jié)點 的左右兩個子樹的高度差的絕對值不超過 1勋陪。
給定有序數(shù)組: [-10,-3,0,5,9],
一個可能的答案是:[0,-3,9,-10,null,5]整吆,它可以表示下面這個高度平衡二叉搜索樹:
0
/
-3 9
/ /
-10 5
/**
* 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 push_it(nums,0,nums.size());
}
private:
TreeNode* push_it(vector<int> &res, int start, int end){
if(start>=end) return NULL;
int mid = (start+end)/2;
TreeNode *p = new TreeNode(res[mid]);
p->left = push_it(res,start,mid);
p->right = push_it(res,mid+1,end);
return p;
}
};
思想:找中間的樹創(chuàng)建節(jié)點然后分別迭代左右 保證每個樹的左子樹右子樹深度盡量一致拱撵。