LeetCode 671.二叉树第二小的结点

这个题我们可以用数组辅助完成,然后进行排序后,再用再进行取值,这是我的代码块:

c 复制代码
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
 void Preorder_trave(struct TreeNode* root,int* number,int* length)
 {
    if(root == NULL)
        return;
    number[(*length)++] = root->val;
    Preorder_trave(root->left,number,length);
    Preorder_trave(root->right,number,length);
 }
 int compare(const void* a,const void* b)
 {
    return *(int*)a - *(int*)b;
 }
int findSecondMinimumValue(struct TreeNode* root) {
	//创立数组
    int* number = (int*)malloc(sizeof(int) * 25);
    //创立数组长度
    int* length = (int*)malloc(sizeof(int));
    *length = 0;
    //使用前序遍历,把结点存入数组中
    Preorder_trave(root,number,length);
    int judge = number[0];
    int k = 0;
    int i = 0;
    //判断每个结点是否相同
    for(i = 0;i < *length;i++)
    {
        if(number[i] == judge)
            k++;
    }
    if(k == *length)
        return -1;
    //进行qsort排序
    qsort(number,*length,sizeof(int),compare);
    //取第二个最小的值
    for(i = 0;i < *length - 1;i++)
    {
        if(number[i] != number[i + 1])
            break;
    }
    return number[i + 1];
}

我这个方法比较通俗易懂,但时间复杂度比较高,大家如果觉得好的话,就请给个免费的赞吧!谢谢了^ _ ^

相关推荐
徐小夕10 小时前
花了一周,3亿tokens,我开源了一款 Word 文档智能审查平台,文稿自动质检+可视化分析,告别低效人工审核
前端·算法·github
可编程芯片开发11 小时前
UPFC统一潮流控制器的simulink建模与仿真
算法
小小仙子12 小时前
矢量网络分析仪如何测试S参数的?
人工智能·算法·机器学习
中微极客13 小时前
降维算法75倍加速:从PCA到稀疏字典学习的工程实践
人工智能·学习·算法
storyseek14 小时前
前缀和实现Kogge-Stone算法
数据结构·算法
元Y亨H14 小时前
开发者必须掌握的十大核心算法
算法
元Y亨H14 小时前
深度解构:数据结构与算法的理论基石与工程演进
数据结构·算法
元Y亨H14 小时前
数据结构与算法的通俗指南
数据结构·算法
2301_7644413315 小时前
用动力学系统(微分方程)为 Kernberg 的客体关系单元提供数学化的操作定义,把“自体—客体“这对心理结构建模成一个二维耦合系统
数据结构·python·算法·数学建模