zoukankan      html  css  js  c++  java
  • 树结构练习——排序二叉树的中序遍历

    树结构练习——排序二叉树的中序遍历

    题目描述

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

    输入

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

    输出

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

    示例输入

    1
    2
    2
    1 20

    示例输出

    2
    1 20
    #include<stdio.h>
    #include<stdlib.h>
    int a[1000], k=0;
    struct node
    {
        int data;
        struct node *l;
        struct node *r;
    };
    node *creat(node *p, int x)
    {
        if(p == NULL)
        {
            p = (node *)malloc(sizeof(node));
            p->l = NULL;
            p->r = NULL;
            p->data = x;
        }
        else
        {
            if(x < p->data)
                p->l = creat(p->l, x);
            else
                p->r = creat(p->r, x);
        }
        return p;
    }
    void mid(node *p)
    {
        if(p != NULL)
        {
            mid(p->l);
            a[k++] = p->data;
            mid(p->r);
        }
    }
    int main()
    {
        int n, num;
        while(scanf("%d", &n) != EOF)
        {
            node *p = NULL;
            for(int i=0; i<n; i++)
            {
                scanf("%d", &num);
                p = creat(p, num);
            }
            k = 0;
            mid(p);
            printf("%d", a[0]);
            for(int i=1; i<n; i++)
                printf(" %d", a[i]);
            printf("
    ");
        }
        return 0;
    }


  • 相关阅读:
    QTP11安装包 免费汉化版 / QTP11破解版下载
    linux查看操作系统版本、内存信息
    Oracle 性能优化总结
    CV-物体检测-tensorflow
    pytest使用-文火微烹pytest
    高科技通缩和比特币投资
    格局观修炼
    陈春花推荐的三本书是什么 back to basic -- management
    长期价值主义
    参与感,对于一个人究竟有多重要?
  • 原文地址:https://www.cnblogs.com/Genesis2018/p/9079860.html
Copyright © 2011-2022 走看看