再生产中 2023-02-07 18:22 采纳率: 77.8%
浏览 25
已结题

将所有序数组转换为二叉搜索树

遇到的问题:
力扣108.将所有序数组转换为二叉搜索树
给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。
高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。

提交后显示解答错误,
我的思路是递归以先序遍历的方式从根节点依次创建其左右节点,最后返回根节点指针。目前不知道错因

我的代码:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */

struct TreeNode* lr(int *nums, int l, int r, struct TreeNode* rt)
{
    if(l>r)
        return NULL;
    rt=(struct TreeNode*)malloc(sizeof(struct TreeNode));
    rt->left=rt->right=NULL;
    int mid=l + (r-l)/2;
    rt->val=nums[mid];
    lr(nums,l,mid-1,rt->left);
    lr(nums,mid+1,r,rt->right);
    return rt;
}

struct TreeNode* sortedArrayToBST(int* nums, int numsSize){
    struct TreeNode *root;
    root=lr(nums,0,numsSize-1,root);
    return root;
}

执行结果:

img

  • 写回答

3条回答 默认 最新

  • 再生产中 2023-02-09 13:18
    关注

    这题涉及到的主要问题就是传参,应当使用二级指针作为实参传递,通过的代码如下:

    
    
    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     struct TreeNode *left;
     *     struct TreeNode *right;
     * };
     */
     
    struct TreeNode* lr(int *nums, int l, int r, struct TreeNode** rt)
    {
        if(l>r)
            return NULL;
        struct TreeNode* rtt=(struct TreeNode*)malloc(sizeof(struct TreeNode));
        rtt->left=rtt->right=NULL;
        int mid=l + (r-l)/2;
        rtt->val=nums[mid];
        *rt=rtt;
        lr(nums,l,mid-1,&(rtt->left));
        lr(nums,mid+1,r,&(rtt->right));
        return rtt;
    }
     
    struct TreeNode* sortedArrayToBST(int* nums, int numsSize){
        struct TreeNode *root;
        root=lr(nums,0,numsSize-1,&root);
        return root;
    }
    
    

    关于传参问题毕竟清晰易懂的解释可以参考这个https://blog.csdn.net/Kukeoo/article/details/114297192?spm=1001.2014.3001.5506

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月17日
  • 已采纳回答 2月9日
  • 修改了问题 2月7日
  • 创建了问题 2月7日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效