• 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++的函数返回机制以后再总结一下。

  • 相关阅读:
    [状压DP]JZOJ 3293 阶乘字符串
    [线段树][Splay][树状数组]JZOJ 3292 发牌
    MySQL之索引
    MySQL(二)
    mysql 练习题
    前端 jQuery
    关于vertical-align和line-height的真知灼见
    CSS语法
    HTML初识
    HTTP协议
  • 原文地址:https://www.cnblogs.com/waruzhi/p/3344379.html
Copyright © 2020-2023  润新知