推荐回答
使用递归进行,设这个函数为Fx1.当X为NULL,FxreturnNULL2.当X!=NULL,Fx:申请一个新节点t,然后用Fx分别处理他的左右孩子,处理后的结果用t1,t2返回,即t1=Ft->Rchild,t2=t->Lchild,再交换处理过后的左右孩子,即t->Lchild=t1,t->Rchild=t2.然后返回t。btree*swapbtreebt{btree*t,*t1,*t2;//定义指针ifbt==NULLreturnNULL;//1.如果代入的节点是个空节点,就返回空else//2.如果代入的节点不是空节点,就做下面的操作{t=btree*mallocsizeofbtree;t->data=bt->data;//申请一个新节点来存放交换后的树t1=swapt->Lchild;//处理这个节点的左子树和右子树t2=swapt->Rchild;t->Lchild=t2;//交换处理后的左右树t->Rchild=t1;returnt;//用t返回处理的结果}}这是个递归过程,可以把它理解成一个函数,这个函数代入的值不同时,返回的结果也不同。
黄真理2019-12-21 19:15:07
提示您:回答为网友贡献,仅供参考。