Leetcode 面试题 04.02. 最小高度树
思路
递归:取数组的中间元素为根节点,前半部分为左子树,后半部分为右子树,然后递归下去,直到遇到没有元素。
代码
TreeNode* sortedArrayToBST(vector<int>& nums) {
return dfs(nums, 0, nums.size()-1);
}
TreeNode* dfs(vector<int>& nums, int low, int high){
if(low>high) return NULL; //子数组为空时
int mid=(low+high)/2; //取中间元素
TreeNode* root=new TreeNode(nums[mid]);
root->left=dfs(nums,low,mid-1 ); //递归生成左子树
root->right=dfs(nums,mid+1,high); //递归生成右子树
return root;
}
总结
一个多星期没刷leetcode了,要每天坚持!