互换二叉树的左右子树互换二叉树的左右子树
#include
#include
#include
#define TRUE 1 #define FLASE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 typedef int Status;
typedef int TElemType; typedef struct BiTNode {
TElemType data;
struct BiTNode *lchild,*rchild; } B...
互换二叉树的左右子树
#include
#include
#include
#define TRUE 1 #define FLASE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 typedef int Status;
typedef int TElemType; typedef struct BiTNode {
TElemType data;
struct BiTNode *lchild,*rchild; } BiTNode,*BiTree;
Status CreateBiTree(BiTree &T) {
TElemType e;
scanf("%d",&e);
if(e==0) T=NULL;
else
{
T=(BiTree)malloc(sizeof(BiTNode));
if(!T)
exit(OVERFLOW);
T->data =e;
CreateBiTree(T->lchild );
CreateBiTree(T->rchild );
}
return OK;
}
Status PrintElement (TElemType e)
{
printf("%d ",e);
return OK;
}
Status PreOrderTraverse (BiTree T,Status (* Visit) (TElemType))
{
if(T)
{
if(Visit(T->data ))
if(PreOrderTraverse(T->lchild ,Visit))
if(PreOrderTraverse(T->rchild ,Visit))
return OK;
return ERROR;
}
else
return OK;
}
Status InOrderTraverse (BiTree T,Status (* Visit) (TElemType))
{
if(T)
{
if(InOrderTraverse(T->lchild ,Visit))
if(Visit(T->data ))
if(InOrderTraverse(T->rchild ,Visit))
return OK;
return ERROR;
}
else
return OK;
}
Status PostOrderTraverse (BiTree T,Status (* Visit) (TElemType))
{
if(T)
{
if(PostOrderTraverse(T->lchild ,Visit))
if(PostOrderTraverse(T->rchild ,Visit))
if(Visit(T->data ))
return OK;
return ERROR;
}
else
return OK;
}
Status Exchangechild (BiTree &T)
{
BiTree temp;
if(T)
{
temp=T->lchild ;
T->lchild =T->rchild ;
T->rchild =temp;
Exchangechild(T->lchild );
Exchangechild(T->rchild );
return OK;
}
else
return ERROR;
}
void main()
{
BiTree T;
printf("请输入树中节点的值(int型),0示空树:\n");
CreateBiTree(T);
Exchangechild(T);
printf("互换左右子树后,二叉树的先序输出是:\n");
PreOrderTraverse(T,PrintElement);
printf("\n");
printf("互换左右子树后,二叉树的中序输出是:\n");
InOrderTraverse(T,PrintElement);
printf("\n");
}
本文档为【互换二叉树的左右子树】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。