前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >排序二叉树的建立注意重复元素

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

作者头像
全栈程序员站长
发布2022-09-15 09:30:10
2750
发布2022-09-15 09:30:10
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

代码语言:javascript
复制
字节跳动校招内推码: 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代码

代码语言:javascript
复制
#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.cn/160052.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档