C语言——最古老的树

本文分享编程学习的心得体会,强调设定明确目标的重要性。通过讲述一棵古老云杉树的故事,引出在编程学习中找到目标对成长的关键作用。同时展示了代码实现查找树龄最多树木的示例。
摘要由CSDN通过智能技术生成

归纳编程学习的感悟,
记录奋斗路上的点滴,
希望能帮到一样刻苦的你!
如有不足欢迎指正!
共同学习交流!
🌎欢迎各位→点赞 👍+ 收藏⭐ + 留言​📝
缺乏明确的目标,一生将庸庸碌碌!

一起加油!

目录

一、题目描述

二、输入输出格式

输入格式

输出格式

三、输入输出样例

输入

输出

三、代码实现:

 


一、题目描述

        世界最古老的树是一棵瑞典的云衫树 OldTjikko,高 4.8 米。 2004 年发现以后,经过碳 14 测定,年龄达到 9500 岁 具有争议的是,只有树根是 9500 岁,树干是后来长出来的,只有几百年历史。即使树干死亡,这种树的根系仍活着,能够重新生成新的树干。树干的生命大约是 600 年左右,当大雪将树干压倒,推入地面后,树枝随后在地下生根,从旧根中萌芽新根。 这一天,勇者在盘点这棵树附近树木的年龄,并且记录了每棵树的年龄(保证是正整数),请问树龄为多少的树木是最多的?如果答案不止一个,请输出最小那个。

二、输入输出格式

输入格式

一个 n(0<n≤1000) ,代表盘点的树的数目, 接下来 n 个数字 y ,代表每棵树的年龄( 0<y≤9500 , y 是整数)。同一行数字之间用空格隔开。

输出格式

一个整数 ans

三、输入输出样例

输入
 
  1. 10
  2. 8 72 12 234 5 6 3 9 9 8
输出

8

三、代码实现:

#include<stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    int a[n],b[9500];
    for(int i=0;i<=9500;i++)
    {
        b[i]=0;
    }
    for(int i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
        b[a[i]]++;
    }
    int max=b[0],y=0;
    for(int i=0;i<=9500;i++)
    {
     if(b[i]>max)
     {
         max=b[i];
         y=i;
     }
    }
    printf("%d",y);
    return 0;
}
  • 23
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
二叉查找(Binary Search Tree,BST)是一种二叉,其中每个节点都包含一个关键字以及其对应的值。对于任意节点,左子中的所有节点的关键字都小于该节点的关键字,右子中的所有节点的关键字都大于该节点的关键字。 此外,BST 具有以下性质: - 在 BST 中进行查找、插入和删除操作的时间复杂度均为 O(log n),其中 n 为 BST 中节点的数量; - 中序遍历 BST 可以得到有序的节点序列; - 对于任意节点,其左子和右子均为 BST。 下面是 C 语言实现 BST 的代码: ```c #include <stdio.h> #include <stdlib.h> // BST 节点结构体 struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; }; // 创建一个新的 BST 节点 struct TreeNode *createTreeNode(int val) { struct TreeNode *node = (struct TreeNode *)malloc(sizeof(struct TreeNode)); node->val = val; node->left = NULL; node->right = NULL; return node; } // 在 BST 中查找节点 val struct TreeNode *findNode(struct TreeNode *root, int val) { if (root == NULL || root->val == val) { return root; } if (val < root->val) { return findNode(root->left, val); } else { return findNode(root->right, val); } } // 在 BST 中插入一个新的节点 val struct TreeNode *insertNode(struct TreeNode *root, int val) { if (root == NULL) { return createTreeNode(val); } if (val < root->val) { root->left = insertNode(root->left, val); } else { root->right = insertNode(root->right, val); } return root; } // 在 BST 中删除一个节点 val struct TreeNode *deleteNode(struct TreeNode *root, int val) { if (root == NULL) { return NULL; } if (val < root->val) { root->left = deleteNode(root->left, val); } else if (val > root->val) { root->right = deleteNode(root->right, val); } else { if (root->left == NULL) { struct TreeNode *temp = root->right; free(root); return temp; } else if (root->right == NULL) { struct TreeNode *temp = root->left; free(root); return temp; } else { struct TreeNode *temp = root->right; while (temp->left != NULL) { temp = temp->left; } root->val = temp->val; root->right = deleteNode(root->right, temp->val); } } return root; } // 中序遍历 BST void inOrderTraversal(struct TreeNode *root) { if (root != NULL) { inOrderTraversal(root->left); printf("%d ", root->val); inOrderTraversal(root->right); } } int main() { struct TreeNode *root = NULL; root = insertNode(root, 5); root = insertNode(root, 3); root = insertNode(root, 7); root = insertNode(root, 1); root = insertNode(root, 9); printf("BST 中序遍历结果:"); inOrderTraversal(root); // 1 3 5 7 9 root = deleteNode(root, 3); printf("\nBST 删除节点 3 后中序遍历结果:"); inOrderTraversal(root); // 1 5 7 9 return 0; } ``` 以上代码实现了 BST 的查找、插入和删除操作,并且提供了中序遍历 BST 的函数。在 main 函数中,我们创建了一个 BST,插入了几个节点,然后进行了一次删除操作,并输出删除后的中序遍历结果。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梵豪

你的鼓励将是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值