当前位置:编程学习 > C/C++ >>

九度教程第35题

C语言源码:
 
[cpp]  
#include<stdio.h>  
#include<stdlib.h>  
#include<limits.h>  
typedef struct BiTree  
{  
    int data;  
    struct BiTree *lchild,*rchild;  
}BiTree;  
BiTree *create(BiTree *t,int n)  
{  
    BiTree *p,*q;  
    p=(BiTree *)malloc(sizeof(BiTree));  
    p->data=n;  
    p->lchild=NULL;  
    p->rchild=NULL;  
    if(!t)  
        t=p;  
    else  
    {  
        q=t;  
        while((n<q->data&&q->lchild)||(n>q->data&&q->rchild))  
        {  
            if(n<=q->data)  
                q=q->lchild;  
            else  
                q=q->rchild;  
        }  
        if(n<q->data)  
                q->lchild=p;  
            else  
                if(n>q->data)  
                    q->rchild=p;  
    }  
    return t;  
}  
void Pre(BiTree *t)  
{  
    if(t)  
    {  
        printf("%d ",t->data);  
        Pre(t->lchild);  
        Pre(t->rchild);  
    }  
}  
void Mid(BiTree *t)  
{  
    if(t)  
    {  
        Mid(t->lchild);  
        printf("%d ",t->data);  
        Mid(t->rchild);  
    }  
}  
void Post(BiTree *t)  
{  
    if(t)  
    {  
        Post(t->lchild);  
        Post(t->rchild);  
        printf("%d ",t->data);  
    }  
}  
int main()  
{  
    int n,i,x;  
    BiTree *T;  
    while(scanf("%d",&n)!=EOF)  
    {  
        T=NULL;  
        for(i=1;i<=n;i++)  
        {  
            scanf("%d",&x);  
            T=create(T,x);  
        }  
        Pre(T);  
        printf("\n");  
        Mid(T);  
        printf("\n");  
        Post(T);  
        printf("\n");  
    }  
}  
 
补充:软件开发 , C++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,