思路
- 递归终止条件?
- 如何确定根结点?——数组中心
- 如何确定数组范围递归建立左子树?
- 如何确定数组范围递归建立右子树?
- 递归返回需根节点
代码
class Solution {
public:
TreeNode* dfs(vector<int>& nums,int p_left,int p_right){
if(p_left>=p_right)
return NULL;
int mid = (p_right+p_left)/2;
TreeNode *root = new TreeNode(nums[mid]);
root->left = dfs(nums,p_left,mid);
root->right = dfs(nums,mid+1,p_right);
return root;
}
TreeNode* sortedArrayToBST(vector<int>& nums) {
return dfs(nums,0, nums.size());
}
};