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

来源:互联网 发布:乱码修复软件 编辑:程序博客网 时间:2024/06/07 01:24

难点创建二叉树,交换,这里均采用递归方法来做。

相信大家一看就懂。


// 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);}}//CreateBiTreevoid 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;}


原创粉丝点击