二叉樹採用二叉連結串列儲存,複製二叉樹的演算法(樹的應用)
二叉樹採用二叉連結串列儲存,試寫出複製一棵二叉樹的演算法。
話不多說上程式碼:
#include<stdio.h>
#include<stdlib.h>
typedef struct BiTnode
{
int data;
struct BiTnode* Lchild,*Rchild;
}BiTnode,*BiTree;
void create(BiTree &S)
{
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;
}