youngyangyang04 / leetcode-master-comment

用来做评论区
0 stars 0 forks source link

[Vssue]0108.将有序数组转换为二叉搜索树.md #52

Open youngyangyang04 opened 5 months ago

youngyangyang04 commented 5 months ago

https://www.programmercarl.com/0108.%E5%B0%86%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E8%BD%AC%E6%8D%A2%E4%B8%BA%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.html

Du1in9 commented 4 months ago
class Solution {
    public TreeNode sortedArrayToBST(int[] nums) {
        return traversal(nums, 0, nums.length - 1);
    }
    private TreeNode traversal(int[] nums, int left, int right) {
        if (left > right) return null;
        int mid = (left + right) / 2;
        TreeNode node = new TreeNode(nums[mid]);
        node.left = traversal(nums, left, mid - 1);
        node.right = traversal(nums, mid + 1, right);
        return node;
    }
}
AlannnXu commented 2 months ago

不需要自建函数的做法: class Solution { public: TreeNode sortedArrayToBST(vector& nums) { if (nums.size() == 0) return NULL; int mid = nums.size() / 2; TreeNode root = new TreeNode(nums[mid]); vector left(nums.begin(), nums.begin() + mid); vector right(nums.begin() + mid + 1, nums.end()); root->left = sortedArrayToBST(left); root->right = sortedArrayToBST(right); return root; } };