18、排序数组转化二叉查找树
convert-sorted-array-to-binary-search-tree:Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
题设要求:将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。
问题分析:AVL是带有平衡条件的二叉查找树。这个平衡条件必须要容易保持,而且它保证树的深度必须是O(logN)。一棵AVL树是其每个节点的左子树和右子树的高度最多差1的二叉查找树。(《数据结构与算法分析》)
代码如下:
class Solution {
public:
TreeNode* sortedArrayToBST(vector<int>& nums) {
int len=nums.size();
if(len==0) return NULL;
TreeNode *root=new TreeNode(nums[len/2]);
vector<int> left,right;
//左边数组
left.insert(left.begin(),nums.begin(),nums.begin()+len/2);
//右边数组
right.insert(right.begin(),nums.begin()+len/2+1,nums.end());
root->left=sortedArrayToBST(left);
root->right=sortedArrayToBST(right);
return root;
}
};