排序二叉树的建立注意重复元素

排序二叉树的建立注意重复元素think:1建立排序二叉树时注意重复元素sdut原题链接树结构练习——排序二叉树的中序遍历TimeLimit:1000MSMemoryLimit:65536KBProblemDescription在树结构中,有一种特殊的二叉树叫做排序二叉树,直观的理解就是——(1).每个节点中包含有一个关键值(2).任意一个节点的左子树(如果存在的话)的关键值小于该节点的关键值

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

字节跳动校招内推码: C4BDSMC
投递链接: https://job.toutiao.com/s/J691fRK
内推交流QQ群:1049175720

think:
1建立排序二叉树时 注意重复元素
sdut原题链接
树结构练习——排序二叉树的中序遍历
Time Limit: 1000MS Memory Limit: 65536KB

Problem Description
在树结构中,有一种特殊的二叉树叫做排序二叉树,直观的理解就是——(1).每个节点中包含有一个关键值 (2).任意一个节点的左子树(如果存在的话)的关键值小于该节点的关键值 (3).任意一个节点的右子树(如果存在的话)的关键值大于该节点的关键值。现给定一组数据,请你对这组数据按给定顺序建立一棵排序二叉树,并输出其中序遍历的结果。

Input
输入包含多组数据,每组数据格式如下。
第一行包含一个整数n,为关键值的个数,关键值用整数表示。(n<=1000)
第二行包含n个整数,保证每个整数在int范围之内。

Output
为给定的数据建立排序二叉树,并输出其中序遍历结果,每个输出占一行。

Example Input
1
2
2
1 20

Example Output
2
1 20

Hint
1 注意重复元素
Author
赵利强

以下为accepted代码

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct node
{
    int date;
    struct node *left;
    struct node *right;
} BinTree;
int flag, n, a[1400];
BinTree * Insert(BinTree *rt, int x)//二叉搜索树的建立算法
{
    if(!rt) /* 若原树为空,生成并返回一个结点的二叉搜索树*/
    {
        rt = (BinTree *)malloc(sizeof(BinTree));
        rt->date = x;
        rt->left = rt->right = NULL;
    }
    else  /* 开始找要插入元素的位置*/
    {
        if(x < rt->date)
            rt->left = Insert(rt->left, x);//递归插入左子树
     ///else if(x > rt->date)/*wrong answer*/
        else
            rt->right = Insert(rt->right, x);//递归插入右子树
    }
    return rt;
}
void mid_put(BinTree *rt)//中序遍历算法
{
    if(rt)
    {
        mid_put(rt->left);//左子树递归
        a[flag++] = rt->date;
        mid_put(rt->right);//右子树递归
    }
}
int main()
{
    int i, x;
    while(scanf("%d", &n) != EOF)
    {
        if(n > 0)
        {
            BinTree *root = NULL;
            flag = 0;
            for(i = 0; i < n; i++)
            {
                scanf("%d", &x);
                root = Insert(root, x);
            }
            mid_put(root);
            for(i = 0; i < flag; i++)
            {
                printf("%d%c", a[i], i == flag-1? '\n': ' ');
            }
        }
    }
    return 0;
}


/***************************************************
User name: jk160630
Result: Accepted
Take time: 0ms
Take Memory: 128KB
Submit time: 2017-02-08 17:07:08
****************************************************/
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160052.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月25日 下午5:46
下一篇 2022年7月25日 下午5:46


相关推荐

  • 华为三层交换机模拟互通(所有端口都是access端口)

    华为三层交换机模拟互通(所有端口都是access端口)

    2021年8月31日
    325
  • ClawHub 必装 Skills 清单:从 13000+ 技能中精选,让你的 OpenClaw 真正能打

    ClawHub 必装 Skills 清单:从 13000+ 技能中精选,让你的 OpenClaw 真正能打

    2026年3月13日
    1
  • java局域网发送文件_Java如何实现局域网文件传输代码案例分享

    java局域网发送文件_Java如何实现局域网文件传输代码案例分享这篇文章主要介绍了java实现局域网文件传输的实例的相关资料,这里提供了实现代码可以帮助大家理解TCP及文件读写的知识,需要的朋友可以参考下java实现局域网文件传输的实例本文主要实现局域网文件传输的实例,对java的TCP知识,文件读写,Socket等知识的理解应用,很好的实例,大家参考下,实现代码:ClientFile.java/***更多资料欢迎浏览凯哥学堂官网:http://kai…

    2022年5月4日
    60
  • PyCharm入门使用教程-最强版本

    PyCharm入门使用教程-最强版本文章比较长哦 耐心看完 PyCharm 是一种 PythonIDE 可以帮助使用者节约时间 提高生产效率 那么具体如何使用呢 本文从 PyCharm 安装到插件 外部工具 专业版功能等进行了一一介绍 希望能够帮助到大家 PyCharm 它差不多是 Python 最常用的 IDE PyCharm 可以为我们节省大量时间 它能够管理代码 并完成大量其他任务 如 debug 和可视化等

    2026年3月27日
    1
  • JWT产生和验证Token

    JWT产生和验证TokenToken 验证 最近了解下基于 Token 的身份验证 跟大伙分享下 很多大型网站也都在用 比如 Facebook Twitter Google Github 等等 比起传统的身份验证方法 Token 扩展性更强 也更安全点 非常适合用在 Web 应用或者移动应用上 Token 的中文有人翻译成 令牌 我觉得挺好 意思就是 你拿着这个令牌 才能过一些关卡 传统的 Token 验证

    2026年3月19日
    2
  • HDFS集成Kerberos并使用Python调用

    HDFS集成Kerberos并使用Python调用搭建 HDFS kerberos 环境目录 1 安装 Hadoop 环境 2 安装 kerberos3 HDFS 集成 kerberos4 启动集群一 安装 Haddop 环境 1 集群机器列表 192 168 2 168 0 12 这里将公司两台服务器作为集群服务器 多台同理选择将 192 168 2 226 作为 master 10 158 90 57 10 158 90 58 和 192 168 0 12 作为 slave 注意 10 158 90 57 即作为管理节点也作为数据节点 2 Hadoop 版本 h

    2026年3月19日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号