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];
}

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

相关推荐
明月看潮生7 分钟前
青少年编程与数学 02-016 Python数据结构与算法 20课题、几何算法
python·算法·青少年编程·编程与数学
wuqingshun31415934 分钟前
经典算法 判断一个图是不是树
数据结构·c++·算法·蓝桥杯·深度优先
微臣愚钝41 分钟前
图论-BFS搜索图/树-最短路径问题的解决
算法·图论·宽度优先
南玖yy1 小时前
排序算法复杂度及稳定性全解析(八种排序)
数据结构·算法·排序算法
飞川撸码1 小时前
【LeetCode 热题100】二叉树构造题精讲:前序 + 中序建树 & 有序数组构造 BST(力扣105 / 108)(Go语言版)
数据结构·leetcode·golang·二叉树
雾里看山1 小时前
算法思想之位运算(一)
算法·leetcode·推荐算法
柯西梦回黄鹤楼1 小时前
《ADVANCING MATHEMATICAL REASONING IN LAN- GUAGE MODELS》全文阅读
人工智能·算法·机器学习
uhakadotcom3 小时前
BentoML远程代码执行漏洞(CVE-2025-27520)详解与防护指南
后端·算法·面试
_x_w3 小时前
【16】数据结构之基于树的排序算法篇章
开发语言·数据结构·python·算法·链表·排序算法
西门吹雪分身3 小时前
Redis之RedLock算法以及底层原理
数据库·redis·算法