将有序数组转换为二叉搜索树

给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 平衡二叉搜索树。

该题需要将有序数组转化为二叉平衡搜索树,故将数组中点作为二叉树的根节点节课,具体步骤如下:

  • 1 数组中点变成根节点,划分左子树数组,右子树数组
  • 2 构建左子树
  • 3 构建右子树

代码如下:


class Solution {
public:
    TreeNode* sortedArrayToBST(vector& nums) {
        if (nums.size()==0) return nullptr;
        // 1 数组中点变成根节点,划分左子树数组,右子树数组
        int index = nums.size()/2;
        int value = nums[index];
        TreeNode* root = new TreeNode(value);
        vector leftNums(nums.begin(), nums.begin()+index);
        vector rightNums(nums.begin()+index+1, nums.end());

        // 2 构建左子树
        root->left = sortedArrayToBST(leftNums);

        // 3 构建右子树
        root->right = sortedArrayToBST(rightNums);

        return root;
    }
};