Convert Sorted Array to Binary Search Tree

使用分治的方法,递归地将数组转成二叉树。这道题提交的时候出现了很多错误,主要问题出在vector、iterator的使用,以及结构体指针的初始化上。代码如下:

    TreeNode *sortedArrayToBST(vector<int> &num) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        int len = num.size();
        if(len == 0)
            return NULL;
        TreeNode *result = new TreeNode(0);
        vector<int>::iterator mid = num.begin()+num.size()/2;
        result->val = *mid;
        vector<int> tmp;
        tmp.assign(num.begin(), mid);
        num.erase(num.begin(), mid+1);
        result->left = sortedArrayToBST(tmp);
        result->right = sortedArrayToBST(num);
        return result;
    }

最开始第7行出现很多问题,因为起初没有new TreeNode,所以最后函数总是返回NULL。

但是如果在第9行的时候赋给val固定值,而不是某个函数的结果,那么返回的就不是NULL,具体原因是什么,等再看看c++的函数返回机制以后再总结一下。

原文地址:https://www.cnblogs.com/waruzhi/p/3344379.html