思想:
1、先写递归交换函数
2、再写一个交换两个树结点的函数
函数:
void swap(BTNode *t){
if(!t)
return;
swap(t->lchild);
swap(t->rchild);
swapNode(t->lchild,t->rchild);
}
//交换两个树结点
//只要是交换的题,就套用这个函数
void swapNode(BTNode *&p,BTNode *&q){
BTNode *temp;
temp=p;
p=q;
q=temp;
}
测试:
#include<stdio.h>
#include <stdlib.h>
#include<math.h> //数学函数,求平方根、三角函数、对数函数、指数函数...
//用于使用c++的输出语句
#include<iostream>
using namespace std;
//二叉树结构体定义
typedef struct BTNode
{
char data;
struct BTNode *lchild;
struct BTNode *rchild;
}BTNode;
void swap(BTNode *t);
void swapNode(BTNode *&p,BTNode *&q);
void preOrder(BTNode *t);
void visit(BTNode *p);
void createBiTree(BTNode* &T);
void main(){
BTNode *t;
createBiTree(t);
preOrder(t);
swap(t);
preOrder(t);
}
void sw