马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
typedef char bitreeElemType;
typedef struct BiNode //定义二叉链表
{
bitreeElemType data;
BiNode* lchild, * rchild;
}BiNode,*BiTree;
int leaf = 0;
void pre_create_Bitree(BiTree* T); //先序创建二叉链表
void pre_traverse_Bitree(BiTree T); //先序遍历
void in_traverse_Bitree(BiTree T); //中序遍历
void post_traverse_Bitree(BiTree T); //后序遍历
int Gethight_Bitree(BiTree T); //求高度
int Getleaf_Bitree(BiTree T); //求叶子数
void swap_Bitree(BiTree T); //左右孩子交换
void pre_create_Bitree(BiTree* T)
{
printf("请输入二叉树元素 \n");
bitreeElemType e;
scanf("%c", &e);
if (e == '#')
*T = NULL;
else
{
*T = (BiTree)malloc(sizeof(BiNode));
(*T)->data = e;
pre_create_Bitree(&((*T)->lchild));
pre_create_Bitree(&((*T)->rchild));
}
}
void pre_traverse_Bitree(BiTree T)
{
if (!T)
return;
printf("%c", T->data);
pre_traverse_Bitree(T->lchild);
pre_traverse_Bitree(T->rchild);
}
void in_traverse_Bitree(BiTree T)
{
if (!T)
return;
in_traverse_Bitree(T->lchild);
printf("%c", T->data);
in_traverse_Bitree(T->rchild);
}
void post_traverse_Bitree(BiTree T)
{
if (!T)
return;
post_traverse_Bitree(T->lchild);
post_traverse_Bitree(T->rchild);
printf("%c", T->data);
}
int Gethight_Bitree(BiTree T)
{
if (!T)
return 0;
return Gethight_Bitree(T->lchild) > Gethight_Bitree(T->rchild) ? Gethight_Bitree(T->lchild) + 1
: Gethight_Bitree(T->rchild) + 1;
}
int Getleaf_Bitree(BiTree T)
{
if (!T)
return 0;
if (T->lchild == NULL && T->rchild == NULL)
return ++leaf;
Getleaf_Bitree(T->lchild);
Getleaf_Bitree(T->rchild);
}
void swap_Bitree(BiTree T)
{
if (!T)
return;
BiTree temp = (BiTree)malloc(sizeof(BiNode));
temp = T->lchild;
T->lchild = T->rchild;
T->rchild = temp;
swap_Bitree(T->lchild);
swap_Bitree(T->rchild);
}
int main()
{
BiTree T = NULL;
pre_create_Bitree(&T);
printf("先序遍历为: \n");
pre_traverse_Bitree(T);
printf("该树高度为: %d\n", Gethight_Bitree(T));
printf("该树有%d个叶子\n", Getleaf_Bitree(T));
swap_Bitree(T);
printf("交换左右节点后先序遍历为: \n");
pre_traverse_Bitree(T);
return 0;
}
第27行,scanf("%c", &e);,改成,scanf_s("%c",&e,1);
|