【LeetCode 48】108.将有序数组转换为二叉搜索树

【LeetCode 48】108.将有序数组转换为二叉搜索树

一、题意

二、解答过程

有序数组在构造二叉搜索树的时候,当前节点0一定是处于数组中间位置的。0的左边和右边分别对应二叉树左右子树,分别进行处理即可。

class Solution {
    
    
public:
    TreeNode* traversal(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 = traversal(nums, left, mid - 1);
        root->right = traversal(nums, mid + 1, right);
        return root;
    }

    TreeNode* sortedArrayToBST(vector<int>& nums) {
    
    
        TreeNode *root=traversal(nums,0,nums.size()-1);
        return root;
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_43891901/article/details/122989389