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

排序二叉树的建立注意重复元素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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 详解如何在vue项目中使用layui框架及采坑

    详解如何在vue项目中使用layui框架及采坑根据官网的文档,要在一个html文件下使用layui里面的组件库其实很简单,但是在vue项目中使用该ui库却存在着很多坑,下面我们就详细讲解一下如何在vue-cli搭建的项目下使用layui1.第一个坑:vue项目中使用npm安装引入时报错(目前并没有找到引入的合适的方式,知道的可以留言探讨)在官网中我们可以看到他提到支持npm安装,但是当我们安装成功后,在main.js中引入时却报并不能…

    2022年6月25日
    93
  • C++学习——动态内存分配「建议收藏」

    C++学习——动态内存分配「建议收藏」文章目录何为静态内存分配?为什么需要动态内存分配解决方法:动态内存分配动态申请内存操作符 newnew 类型名T(初始化参数列表)释放内存操作符deletedelete 指针名p注意问题内存泄露举例申请和释放动态数组动态创建多维数组何为静态内存分配?通常定义变量(或对象),编译器在编译时可以根据该变量(或对象)的类型知道所需内存空间的大小,从而系统在适当的时候事先为他们分配确定的存储空间。这种…

    2022年8月18日
    8
  • stm32 带通滤波器_带通滤波器详解_带通滤波器工作原理_带通滤波器原理图

    stm32 带通滤波器_带通滤波器详解_带通滤波器工作原理_带通滤波器原理图带通滤波器(band-passfilter)是一个国家允许使用特定频段的波通过发展同时进行屏蔽其他频段的设备。比如RLC振荡回路问题就是这样一个可以模拟带通滤波器。带通滤波器是一种滤波器,它可以在一定的频率范围内通过频率分量,但将其他范围内的频率分量衰减到非常低的水平,与带阻滤波器的概念形成对比。模拟带通滤波器的一个例子是电阻电感电容电路(RLC电路)。这些滤波器也可以通过将低通滤波器与高通…

    2022年5月2日
    34
  • mybatis的rowbounds是物理分页吗_rowbounds分页

    mybatis的rowbounds是物理分页吗_rowbounds分页mybatis中,使用RowBounds分页,非常方便不需要在sql语句中写limit,mybatis会自动拼接sql,添加limit最核心的是在mapper接口层,传参时传入RowBounds(intoffset,intlimit)对象,即可完成分页注意:由于java允许的最大整数为2147483647,所以limit能使用的最大整数也是…

    2022年9月22日
    3
  • 删除链表倒数第n个节点_求链表的倒数第m个元素

    删除链表倒数第n个节点_求链表的倒数第m个元素原题链接给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。进阶:你能尝试使用一趟扫描实现吗?示例 1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2:输入:head = [1], n = 1输出:[]示例 3:输入:head = [1,2], n = 1输出:[1]提示:链表中结点的数目为 sz1 <= sz <= 300 <= Node.val <= 1001 <= n <= s

    2022年8月8日
    9
  • Java二维数组的输出

    Java二维数组的输出Java二维数组的输出<1>(1)输出结果右对齐”%5d”publicclassHelloWorld{publicstaticvoidmain(String[]args){intmyArray[][]={{1,2},{7,2},{3,4}};for(inti=0;i<3;i++){for(intj=0;j<2;j++)System.out.p..

    2022年6月1日
    33

发表回复

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

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