二叉树采用二叉链表存储,试写出复制一棵二叉树的算法。
话不多说上代码:
#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;
}
二叉树复制算法
本文介绍了一种使用二叉链表存储的二叉树复制算法,并提供了完整的C语言实现代码。通过递归方式实现了二叉树节点的复制,确保了新旧树结构的一致性。
5342

被折叠的 条评论
为什么被折叠?



