1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */ class Solution { public:
//使用递归法实现 TreeNode* digui(vector<int>& nums, int left, int right){ if(left > right){ return NULL; }
//单层递归逻辑 int mid = left + ((right - left) / 2); TreeNode* root = new TreeNode(nums[mid]);
//递归调用 root->left = digui(nums, left, mid - 1); root->right = digui(nums, mid + 1, right);
return root; }
TreeNode* sortedArrayToBST(vector<int>& nums) { //使用迭代法实现 return digui(nums, 0, nums.size() - 1); } };
|