大学程序实验.数据结构.树型结构及其应用三.调换子树
- 2 下一章
0 目录
4 树型结构及其应用
4.3 调换子树
4.3.1 题目
编写算法交换二叉树中所有结点的左、右子树。
4.3.2 源码
// 调换子树.cpp : Defines the entry point for the console application.
//
typedef char TElemType;
typedef int Status;
typedef struct BiTNode
{
TElemType data;
struct BiTNode *lchild, *rchild;
}BiTNode,*BiTree;
void BiTreeMenu();
Status CreateBiTree(BiTree *T);
void PreOrderTraverse(BiTNode* T);
void BiTreeNodeSwap(BiTNode *T);
void BiTreeMenu()
{
printf("========二叉树子树结点交换========\n");
printf("二叉树创建\n");
printf("请输入二叉树各节点数:");
}
Status CreateBiTree(BiTree *T)
{
TElemType ch;
TElemType temp;
scanf("%c",&ch);
temp=getchar();
if(ch == '#')
{
*T = NULL;
}
else
{
*T=(BiTree)malloc(sizeof(BiTNode) );
if(!(*T))
{
return ERROR;
}
else
{
(*T)->data=ch;
printf("请输入%c的左节点的值:",ch);
CreateBiTree(&(*T)->lchild);
printf("请输入%c的右节点的值:",ch);
CreateBiTree(&(*T)->rchild);
}
}
return OK;
}
void PreOrderTraverse(BiTNode *T)
{
if(T)
{
printf(" %c",T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
}
void BiTreeNodeSwap(BiTNode *T)
{
BiTNode* temp;
if(T == NULL)
{
return;
}
else
{
temp = T->lchild;
T->lchild = T->rchild;
T->rchild = temp;
BiTreeNodeSwap(T->lchild);
BiTreeNodeSwap(T->rchild);
}
}
Status main()
{
BiTree pRoot;
BiTree *p=(BiTree*)malloc(sizeof(BiTree));
BiTreeMenu();
printf("请输入第一个节点的值,'#'代表没有叶节点:\n");
CreateBiTree(&pRoot);
BiTreeNodeSwap(pRoot);
printf("子树调换后的树为:\n");
PreOrderTraverse(pRoot);
printf("\n");
return OK;
}
1.1.3 下载
链接地址: 4.3_调换子树.CPP