LeetCode(108)将有序数组转换为二叉搜索树
思路:分而治之
/** * 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* sortedArrayToBST(vector<int>& nums) { return BST(nums,0,nums.size()-1); } TreeNode* BST(vector<int>&nums,int head,int tail){ if(head>tail)return NULL; int mid = (head+tail)/2; TreeNode*h = new TreeNode(nums[mid]); h->left = BST(nums,head,mid-1); h->right = BST(nums,mid+1,tail); return h; } };