关于leetcode108号问题

来源:7-7 二分搜索树中的问题 Lowest Common Ancestor of a Binary Search Tree

manbaneverout

2020-02-13

老师您好,您关于108号问题的代码中,对于测试用例[-10,-3,0,5,9],0的左子树中,mid取的是-10的下标0,而实际上应该取-3的下标1,但是为什么能获得AC?
图片描述

class Solution {
public:
    TreeNode* sortedArrayToBST(vector<int>& nums) {

        if(nums.size() == 0)
            return NULL;
        return buildTree(nums, 0, nums.size() - 1);
    }

private:
    TreeNode* buildTree(const vector<int>& nums, int l, int r){

        if(l > r) return NULL;
        if(l == r) return new TreeNode(nums[l]);

        int mid = (l + r) / 2;
        TreeNode* root = new TreeNode(nums[mid]);
        root->left = buildTree(nums, l, mid - 1);
        root->right = buildTree(nums, mid + 1, r);
        return root;
    }
};

写回答

1回答

liuyubobobo

2020-02-14

这个问题的解不唯一。


对于这个测试用例,你给的截图中。


我的程序输出的是这样一颗二叉树:

    0
  /   \
-10    5
  \     \
   -3    9


预期结果是这样一颗二叉树:

    0
   /   \
 -3     9
 /     /
-10   5


他们都是正确答案。


继续加油!:)

0
1
manbaneverout
非常感谢!
2020-02-14
共1条回复

玩转算法面试-- Leetcode真题分门别类讲解

课程配套大量BAT面试真题,高频算法题解析,强化训练

7410 学习 · 1150 问题

查看课程