编写算法交换二叉树中所有结点的左

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

编写算法交换二叉树中所有结点的左、右子树

#include"stdio.h"

#include"malloc.h"

#define maxsize 10

#define NULL 0

typedef struct node{

char data;

struct node *lchild,*rchild;

}Bintree;

Bintree *Q[maxsize];

Bintree *creatree(){

char ch;

int front=1,rear=0;

Bintree *T,*S;

T=NULL;

ch=getchar();

while(ch!='#'){

S=NULL;

if(ch!='@'){

S=(Bintree *)malloc(sizeof(Bintree));

S->data=ch;

S->lchild=S->rchild=NULL;

}

rear++;

Q[rear]=S;

if(rear==1) T=S;

else{ if(S!=NULL&&Q[front]!=NULL)

if(rear%2==0) Q[front]->lchild=S;

else Q[front]->rchild=S;

if(rear%2==1) front++;

}

ch=getchar();

}

return T;

}

void printree(Bintree *T){

if(T){ printf("%2c",T->data);

printree(T->lchild);

printree(T->rchild);

}

}

void changetree(Bintree *T){

if(T){ Bintree *A;

changetree(T->lchild);

changetree(T->rchild);

A=T->lchild;

T->lchild=T->rchild;

T->rchild=A;

}

}

void main(){

Bintree *TR;

printf("创建二叉树:");

TR=creatree();

printf("先序遍历输出初始化二叉树为:");

printree(TR);

printf("\n");

changetree(TR);

printf("先序遍历输出交换左右子树后的二叉树为:"); printree(TR);

printf("\n");

}

相关文档
最新文档