以二叉链表作为二叉树的存储结构,交换二叉树中每个结点的左孩子和右孩子。
输入:输入二叉树的先序序列。
一棵二叉树的先序序列是一个字符串,若字符是‘#’,表示该二叉树是空树,否则该字符是相应结点的数据元素。
输出:
第一行是原二叉树的中序遍历序列;
第二行是交换后的二叉树的中序遍历序列。
结局代码如下:
#include <stdio.h>
#include <stdlib.h>
#define OK 1
typedef int Status;
typedef char telemtype;
typedef struct BiNode{
telemtype data;
struct BiNode *lchild,*rchild;
}BiTNode,*BiTree;
Status CreateBiTree(BiTree*T){
char ch;
if(scanf("%c",&ch)==1){
if( ch=='#') *T=NULL;
else{
*T=(BiTNode*)malloc(sizeof(BiTNode));
(*T)->data=ch;
CreateBiTree(&(*T)->lchild);
CreateBiTree(&(*T)->rchild);
}
}
return OK;
}
Status INorder(BiTree T){
if(T){
INorder(T->lchild);
printf ("%c",T->data);
INorder(T->rchild);
}
return OK;
}
Status HNorder(BiTree T){
if(T){
HNorder(T->rchild);
printf ("%c",T->data);
HNorder(T->lchild);
}
return OK;
}
int main()
{
BiTree root;
CreateBiTree(&root);
INorder(root);
printf("\n");
HNorder(root);
printf("\n");
return 0;
}