当前位置: 代码网 > it编程>软件设计>算法 > LeetCode 230.二叉搜索树中第K小的元素

LeetCode 230.二叉搜索树中第K小的元素

2024年07月28日 算法 我要评论
各位看官们,大家好啊,今天这个题我用的方法时间复杂度比较高,但也是便于便于理解的一种方法,大家如果觉得的好的话,就给个免费的赞吧,谢谢大家了^ _ ^题目要求如图所示:题目步骤:1.我们可以一维数组来接收各个二叉树结点的值:2.然后我们再用qsort排序:3.然后我们再用for循环遍历,就能找到第k个最小值了^ _ ^全部代码如下图所示:好了,这就是我此题的方法,大家如果觉得好理解,就给个免费的赞吧,谢谢各位看官了^ _ ^

各位看官们,大家好啊,今天这个题我用的方法时间复杂度比较高,但也是便于便于理解的一种方法,大家如果觉得的好的话,就给个免费的赞吧,谢谢大家了^ _ ^
题目要求如图所示:
在这里插入图片描述
题目步骤:
1.我们可以一维数组来接收各个二叉树结点的值:

	//number是数组的大小
    int* number = (int*)malloc(sizeof(int)*10000);
    //length是一维数组的长度
    int* length = (int*)malloc(sizeof(int));
    *length = 0;
    preoder_trave(root,number,length);
void preoder_trave(struct treenode* root,int* number,int* length)
{
    if(root == null)
        return;
    number[(*length)++] = root->val;
    preoder_trave(root->left,number,length);
    preoder_trave(root->right,number,length);
}

2.然后我们再用qsort排序:

qsort(number,*length,sizeof(int),intcompare);
int intcompare(const void* a,const void* b)
{
    return (*(int*)a - *(int*)b);
}

3.然后我们再用for循环遍历,就能找到第k个最小值了^ _ ^

    int i = 0;
    for(i = 0;i < *length;i++)
    {
        if(i == k - 1)
        {
            return number[i];
        }
    }

全部代码如下图所示:

/**
 * definition for a binary tree node.
 * struct treenode {
 *     int val;
 *     struct treenode *left;
 *     struct treenode *right;
 * };
 */
int intcompare(const void* a,const void* b)
{
    return (*(int*)a - *(int*)b);
}
void preoder_trave(struct treenode* root,int* number,int* length)
{
    if(root == null)
        return;
    number[(*length)++] = root->val;
    preoder_trave(root->left,number,length);
    preoder_trave(root->right,number,length);
}
int kthsmallest(struct treenode* root, int k) {
    int* number = (int*)malloc(sizeof(int)*10000);
    int* length = (int*)malloc(sizeof(int));
    *length = 0;
    preoder_trave(root,number,length);
    qsort(number,*length,sizeof(int),intcompare);
    int i = 0;
    for(i = 0;i < *length;i++)
    {
        if(i == k - 1)
        {
            return number[i];
        }
    }
    return 0;
}

好了,这就是我此题的方法,大家如果觉得好理解,就给个免费的赞吧,谢谢各位看官了^ _ ^

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com