问题:采用二叉链存储结构存储。设计一个算法把二叉树b的左、右子树进行交换得到新的二叉树t。一到display函数就不出结果,我个人认为是Newtree函数出来问题。
#include "BTree.cpp"
int NewTree(BTNode *bt,BTNode*&t )
{
if(bt!=NULL)
{ t=(BTNode *)malloc(sizeof(BTNode));
bt->data=t->data;
if(bt->lchild!=NULL)
NewTree(bt->lchild,t->rchild);
else if(bt->rchild!=NULL)
NewTree(bt->rchild,t->lchild);
}
else t=NULL;
}
void display(BTNode*bt,BTNode *&t)
{ NewTree(bt,t);
if(t=NULL)
printf("bt树为空树");
else
{printf("新二叉树为:");
DispBTree(t);}
}
int main()
{ BTNode *bt,*t,*bt1;
CreateBTree(bt,"A(B(D,E(G,H)),C(,F(I)))");
printf("bt:");
DispBTree(bt);
printf("good");
printf("\n");
display(bt,t);
printf("good2");
DestroyBTree(bt);
CreateBTree(bt1," ");
display(bt1,t);
printf("good3");
DestroyBTree(bt1);
DestroyBTree(t);
}