您的位置:首页 > 理论基础 > 数据结构算法

编写一个递归算法,实现将一颗二叉树的左右孩子互换。

2013-11-27 23:53 357 查看
难点创建二叉树,交换,这里均采用递归方法来做。

相信大家一看就懂。

// ChangeChild.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <stdlib.h>
#include <iostream>
#include <Windows.h>

using namespace std;

typedef char element;

typedef struct bitree
{
element data;
struct bitree* lchild;
struct bitree* rchild;
}bitree;
//交换左右子树
void changechild(bitree* root)
{
//element eleTemp;
bitree* bitTemp;
if (root == NULL)
{
root = NULL;
}
else
{
bitTemp = root->lchild;
root->lchild = root->rchild;
root->rchild = bitTemp;
changechild(root->lchild);
changechild(root->rchild);
}
}
void CreateBiTree(bitree* &T)
{
char ch;
cin>>ch;
if(ch=='#') T=NULL;
else
{
T=(bitree *)malloc(sizeof(bitree));
T->data=ch;
cout<<"put in \'"<<T->data<<"\' lchild"<<endl;
CreateBiTree(T->lchild);
cout<<"put in \'"<<T->data<<"\' rchild"<<endl;
CreateBiTree(T->rchild);
}
}//CreateBiTree
void PreTraversal(bitree* T)
{
if (T == NULL)
{
return;
}
else
{
printf("%c,",T->data);
PreTraversal(T->lchild);
PreTraversal(T->rchild);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
bitree* b1 ;
b1= (bitree *)malloc(sizeof(bitree));
bitree* broot;
broot = b1;
printf("enter # is over,put in root node\n");
CreateBiTree(b1);
printf("created tree\n");
PreTraversal(b1);
changechild(b1);
printf("\nafter change lchild ,rchild\n");
PreTraversal(b1);
system("pause");
return 0;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐