力扣 hot100 Day43
108. 将有序数组转换为二叉搜索树
给你一个整数数组 nums
,其中元素已经按 升序 排列,请你将其转换为一棵 平衡 二叉搜索树。
//抄的
class Solution {
public:TreeNode* sortedArrayToBST(vector<int>& nums) {return helper(nums, 0, nums.size() - 1);}TreeNode* helper(vector<int>& nums, int left, int right) {if (left > right) return nullptr;int mid = left + (right - left) / 2;// 创建当前子树的根节点,值为中间元素TreeNode* root = new TreeNode(nums[mid]);// 递归构建左子树(左半部分数组)root->left = helper(nums, left, mid - 1);// 递归构建右子树(右半部分数组)root->right = helper(nums, mid + 1, right);return root;}
};
简单题都做不出来了。。感觉二叉树水平很烂,另外花时间做做代码随想录吧
思路很简单,二分然后递归,终止条件是判断左右指针,有点像滑动窗口。
需要构造辅助函数,因为原函数传递的参数不够,需要左右指针辅助
主要还是递归不够熟练