二叉树采用二叉链表存储,复制二叉树的算法(树的应用)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/printf88/article/details/78403072

二叉树采用二叉链表存储,试写出复制一棵二叉树的算法。

话不多说上代码:

#include<stdio.h>

#include<stdlib.h>

typedef struct BiTnode  

{  

        int data;  

        struct BiTnode* Lchild,*Rchild;   

}BiTnode,*BiTree;  

  

void create(BiTree &S)  

扫描二维码关注公众号,回复: 4437868 查看本文章

{  

        char ch;  

        char temp;  

        scanf("%c",&ch);  

        temp=getchar();  

        if(ch=='#')  

        {  

                S=NULL;  

        }  

        else  

        {  

                S=(BiTree)malloc(sizeof(BiTnode) );  

                if(!S)  

                {  

                    exit(0);  

                }  

                else  

                {  

                        S->data=ch;  

                         

                        create(S->Lchild);  

                        

                        create(S->Rchild);  

                }  

  

        }  

        return;  

  

}

 void Traverse(BiTree T)  

{  

        if(NULL==T)  

        {  

                return;  

        }  

        else  

        {  

            printf("%c ",T->data);  

            Traverse(T->Lchild);  

            Traverse(T->Rchild);  

        }  

  

}  

  

 

void CopyTree(BiTree S,BiTree &T){

BiTree lptr,rptr;

    if (!S) T=NULL;

    else{

        CopyTree(S->Lchild,lptr);        CopyTree(S->Rchild,rptr);  

          

            T=(BiTree)malloc(sizeof(BiTnode) );

        T->data=S->data;

        T->Lchild=lptr;T->Rchild=rptr;

    }

}

int main()

{  

     BiTree T;BiTree S;

 printf("创建一个树\n");        

     create(S);

     printf("遍历该树\n");

 Traverse(S);     

     printf("\n");

     printf("拷贝该树\n");

     CopyTree(S,T);

     Traverse(T);

     return 0;

 } 

猜你喜欢

转载自blog.csdn.net/printf88/article/details/78403072