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

 中序遍历的逆序过程。

/**
 * 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* sortedArrayToBST(vector<int>& nums) {
        return sortedArrayToBST(nums, 0, nums.size() - 1);
    }
    TreeNode* sortedArrayToBST(vector<int>& nums, int left, int right)
    {
        if (right < left) return nullptr;
        int mid = left + (right - left) / 2;  //此处注意直接相加可能会溢出
        TreeNode* root = new TreeNode(nums[mid]);
        root->left = sortedArrayToBST(nums, left, mid - 1);  //构建左树
        root->right = sortedArrayToBST(nums, mid + 1, right);  //构建右树
        return root;
    }
};

猜你喜欢

转载自www.cnblogs.com/ZSY-blog/p/12961218.html