二叉排序树的创建、插入和遍历(代码)

来源:互联网 发布:java和安卓哪个好 编辑:程序博客网 时间:2024/06/05 09:23
/*二叉排序树的创建、插入、遍历样例输入51 6 5 9 8样例输出1 6 5 9 81 5 6 8 95 8 9 6 1*/#include<stdio.h>#include<string>using namespace std;//数据结构struct Node{    Node *lchild;    Node *rchild;    int c;} Tree[100];int loc;//创建树Node *create(){        Tree[loc].lchild = NULL;        Tree[loc].rchild = NULL;        return &Tree[loc++];}//前、中、后序遍历void preOrder(Node *T){    printf("%d ",T->c);    if(T->lchild!=NULL)    {        preOrder(T->lchild);    }    if(T->rchild!=NULL)    {        preOrder(T->rchild);    }}void midOrder(Node *T){    if(T->lchild!=NULL)    {        midOrder(T->lchild);    }    printf("%d ",T->c);    if(T->rchild!=NULL)    {        midOrder(T->rchild);    }}void postOrder(Node *T){    if(T->lchild!=NULL)    {        postOrder(T->lchild);    }    if(T->rchild!=NULL)    {        postOrder(T->rchild);    }    printf("%d ",T->c);}//插入节点Node *insert_tree(Node *T,int x){    if(T==NULL)    {        T = create();        T->c = x;    }    else if(x>T->c)    {        T->rchild = insert_tree(T->rchild,x);    }    else if(x<T->c)    {        T->lchild = insert_tree(T->lchild,x);    }    return T;}int main(){    int n;    while(scanf("%d",&n)!=EOF)    {        Node *T = NULL;        loc = 0;        for(int i=0;i<n;i++)        {            int x;            scanf("%d",&x);            T = insert_tree(T,x);        }        preOrder(T);        printf("\n");        midOrder(T);        printf("\n");        postOrder(T);        printf("\n");    }    return 0;}
阅读全文
0 0
原创粉丝点击