108. Convert Sorted Array to Binary Search Tree 有序数组转换为平衡二叉搜索树

来源:互联网 发布:java同时启动多个线程 编辑:程序博客网 时间:2024/05/17 00:02

题目地址
要求二叉搜索树,则是左大右小,平衡的话,左右子树高度差不超过1,首先考虑大小为1,2,3……的数组,中间的为头结点,左边为左子树,右边为右子树,然后扩展到一般的数组,左右子数的构建用递归就可以了。

class Solution {public:    TreeNode *sortedArrayToBST(vector<int> &nums) {        if (nums.empty()) {            return NULL;        }        TreeNode *root = new TreeNode(nums[nums.size() / 2]);        vector<int> vl = vector<int>(nums.begin(), nums.begin() + nums.size() / 2);        vector<int> vr = vector<int>(vector<int>(nums.begin() + nums.size() / 2 + 1, nums.end()));        root->left = sortedArrayToBST(vl);        root->right = sortedArrayToBST(vr);        return root;    }};
0 0