使用分治的方法,递归地将数组转成二叉树。这道题提交的时候出现了很多错误,主要问题出在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++的函数返回机制以后再总结一下。