#include <stdio.h>
#include <stdlib.h>typedef struct node
{
char data;
struct node *lChild, *rChild;
} tNode,*tPointer;//递归先序创建二叉树
tPointer createTree(tPointer t)
{
char c;
scanf("%c",&c);if(c == '#')
{
t = NULL;
}
else
{
t = (tPointer)malloc(sizeof(tNode));
t -> data = c;
t -> lChild = NULL;
t -> rChild = NULL;t -> lChild = createTree(t -> lChild);//建立左子树
t -> rChild = createTree(t -> rChild);//建立右子树
}
return t;
}tPointer exchangeTree(tPointer t)
{
tPointer temp;
if(t)
{
if((t -> lChild) || (t -> lChild))
{
temp = t -> lChild;
t -> lChild = t -> rChild;
t -> rChild = temp;
}}
if(t -> lChild)
{
t -> lChild = exchangeTree(t -> lChild);
}if(t -> rChild)
{
t -> rChild = exchangeTree(t -> rChild);
}return t;
}//递归先序遍历二叉树
void frontTree(tPointer t)
{
if (t)
{
printf("%c",t -> data);
frontTree(t -> lChild);
frontTree(t -> rChild);
}
}//递归删除二叉树
void destroyTree(tPointer t)
{
if(t)
{
if(t -> lChild)destroyTree(t -> lChild);//删除左子树
if(t -> rChild)destroyTree(t -> rChild);//删除右子树
free(t);
t = NULL;
}
}int main()
{
tPointer t = createTree(t);t = exchangeTree(t);
frontTree(t);
destroyTree(t);
return 0;
}
交换二叉树
于 2022-11-18 15:55:51 首次发布