试建立一棵二叉树,并输出以中序遍历此二叉树的结果序列。

论坛 期权论坛 期权     
sunjiajili   2018-4-26 13:52   3426   1
要求算法中包含有建立二叉树和中序遍历二叉树两个函数。可以采用递归算法实现。(用tourb c编程)作业题 谢谢!!
分享到 :
0 人收藏

1 个回复

倒序浏览
2#
lanzhouxiaomo  1级新秀 | 2018-4-30 02:00:11 发帖IP地址来自
#include
#include
#define SIZE sizeof(struct BinaryTree)
struct BinaryTree
{
    int data;
    struct BinaryTree *llink,*rlink;
}*root;

void creat()
{
    struct BinaryTree *p1,*p2;
    int temp,flag;
    root=NULL;
    p1=p2=(struct BinaryTree *)malloc(SIZE);
    printf("Input the data,input 0 stop:\n");
    while(1)
    {
        scanf("%d",&temp);        //输入0的时候,输入完成
        if(temp==0) break;
        if(root==NULL)
        {
            root=(struct BinaryTree *)malloc(SIZE);
            root->data=temp; root->llink=root->rlink=NULL;
        }
        else
        {
         p2=root; flag=0;
        while(flag!=1)
        {
            if(temp>=p2->data&&p2->rlink!=NULL) p2=p2->rlink;
            else if(tempdata&&p2->llink!=NULL) p2=p2->llink;
            else if(temp>=p2->data&&p2->rlink==NULL)
            {
                p1=(struct BinaryTree *)malloc(SIZE);
                p1->data=temp;
                p2->rlink=p1;
                p1->llink=p1->rlink=NULL;
                flag=1;
            }
            else if(tempdata&&p2->llink==NULL)
            {
                p1=(struct BinaryTree *)malloc(SIZE);
                p1->data=temp;
                p2->llink=p1;
                p1->llink=p1->rlink=NULL;
                flag=1;
            }
        }
        }
    }
}

void print(struct BinaryTree *p)
{
    if(p!=NULL)
    {
        print(p->llink);
        printf("%d ",p->data);
        print(p->rlink);
    }
}
void main()
{
    creat();
    print(root);
    getch();
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP