//141页算法设计题5.3.3交换二叉树每个节点的左右孩子
#include
using namespace std;
//二叉树的二叉链表存储表示
typedef struct BiNode
{
char data; //结点数据域
struct BiNode *lchild,*rchild; //左右孩子指针
}BiTNode,*BiTree;
//用算法5.3建立二叉链表
void CreateBiTree(BiTree &T)
{
//按先序次序输入二叉树中结点的值(一个字符),创建二叉链表表示的二叉树T
/***********************************Begin******************************/
char ch;
cin>>ch;
if(ch=='#') T==NULL;
else{T=new BiTNode;
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);}
/***********************************End*******************************/
} //CreateBiTree
void InOrderTraverse(BiTree T)
{
//中序遍历二叉树T的递归算法
/***********************************Begin******************************/
if(!T)
{
InOrderTraverse(T->lchild);
printf("%c",T->data);
InOrderTraverse(T->rchild);
}
/***********************************End*******************************/
}
void ChangeLR(BiTree &T)
{
/***********************************Begin******************************/
BiTree temp;
if(T->rchild==NULL&&T->lchild==NULL)
return;
else{
temp=T->lchild;T->lchild=T->rchild;T->rchild=temp;
}
ChangeLR(T->lchild);
ChangeLR(T->rchild);
/***********************************End*******************************/
}
int main()
{
BiTree tree;
CreateBiTree(tree);
ChangeLR(tree);
InOrderTraverse(tree);
return 0;
}
头歌教学平台运行不出结果