题意:
将一个有序的数组建成一棵平衡的BST树。
思路:
因为数组已经有序,每次可以从中点开始建根,再递归下去分别处理左/右子树。
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public: TreeNode* DFS(vector<int>& nums,int L,int R)
{
if(L>R) return NULL;
int mid=(L+R)>>;
TreeNode* t=new TreeNode(nums[mid]);
t->left=DFS(nums, L, mid-);
t->right=DFS(nums, mid+, R);
return t;
} TreeNode* sortedArrayToBST(vector<int>& nums) {
return DFS(nums,,nums.size()-);
}
};
AC代码