问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

数据结构中关于用c++语言建立二叉树的问题,求代码,急!!!

发布网友 发布时间:2022-05-12 07:53

我来回答

1个回答

热心网友 时间:2024-01-18 23:54

我有C语言版的,要不???
先建立一个头文件"bitree.h"(以下都要用到):
#include
<stdio.h>
#include
<malloc.h>
#include
<conio.h>
typedef
char
DataType;
typedef
struct
Node
{
DataType
data;
struct
Node
*LChild;
struct
Node
*RChild;
}BiTNode,
*BiTree;
void
CreateBiTree(BiTree
*bt)
{
char
ch;
ch
=
getchar();
if(ch=='.')
*bt=NULL;
else
{
*bt=(BiTree)malloc(sizeof(BiTNode));
//生成一个新结点
(*bt)->data=ch;
CreateBiTree(&((*bt)->LChild));
//生成左子树
CreateBiTree(&((*bt)->RChild));
//生成右子树
}
}
程序如下:
(1)
#include
"bitree.h"
void
preOrder(BiTree
root)
/*先序遍历二叉树,
root为指向二叉树根结点的指针*/
{
if
(root!=NULL)
{
printf("%c",root->data);
/*输出结点*/
preOrder(root
->LChild);/*先序遍历左子树*/
preOrder(root
->RChild);
/*先序遍历右子树*/
}
}
void
inOrder(BiTree
root)
{
if(root!=NULL)
{
inOrder(root->LChild);/*中序遍历左子树*/
printf("%c",root->data);
/*输出结点*/
inOrder(root->RChild);/*中序序遍历右子树*/
}
}
void
postOrder(BiTree
root)
{
if(root!=NULL)
{
postOrder(root->LChild);/*后序遍历左子树*/
postOrder(root->RChild);/*后序遍历右子树*/
printf("%c",root->data);/*输出结点*/
}
}
void
main()
{
BiTree
T;
printf("建立二叉树,请输入序列:\n");
CreateBiTree(&T);
printf("\n输出前序序列为:");
preOrder(T);
printf("\n输出中序序列为:");
inOrder(T);
printf("\n输出后序序列为:");
postOrder(T);
getch();
}
(2)
#include
"bitree.h"
int
leaf(BiTree
root)//求二叉树中叶子结点的数目
{
int
LeafCount;
if(root==NULL)
LeafCount=0;
else
if((root->LChild==NULL)&&(root->RChild==NULL))
LeafCount=1;
else
LeafCount=leaf(root->LChild)+leaf(root->RChild);
return
LeafCount;
}
void
main()
{
BiTree
T;
int
LeafCount;
printf("按扩展先序遍历序列建立二叉树,请输入序列:\n");
CreateBiTree(&T);
LeafCount=leaf(T);
printf("\n输出叶子结点的个数:");
leaf(T);
printf("%d",LeafCount);
}
(3)
#include
"bitree.h"
int
PostTreeDepth(BiTree
bt)
{
int
hl,hr,max;
if(bt!=NULL)
{
hl=PostTreeDepth(bt->LChild);
hr=PostTreeDepth(bt->RChild);
max=hl>hr?
hl:hr;
return(max+1);
}
else
return(0);
}
void
main()
{
BiTree
T;
int
max;
printf("建立二叉树,请输入序列:\n");
CreateBiTree(&T);
max=PostTreeDepth(T);
printf("\n输出二叉树的高度为:");
PostTreeDepth(T);
printf("%d",max);
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
山外面包一个病旁是什么字 我的笔记本电脑显示电源的灯一直在绿色和橘红色之间闪烁,这是怎么回事... 笔记本电脑3个灯笔记本电脑这几个指示灯分别是啥意思 ...我的y470.第3个指示灯是橘红色的,开不了机,不知道怎么了?就开不了... QQ空间皮肤的代码是怎么放进去的啊. 为什么我在地址栏中输入皮肤代码按回车键,但一按空间就没有了 请教个问题哈~关于qq空间背景代码的,我在IE栏里输了代码,为啥每次弹出 ... win10删除多余的输入法 win10怎么删除多余的输入法 win10输入法怎么删除 win10输入法删除方法 如何做出爽口不腻、口味纯正的孟和尚粉肠? 河间信誉楼外面的存储柜东西丢在里面了第二天还能取吗? 磁性,磁极和极性有何区别? 怎样分辨磁铁的极性 有没有只有一个极性的磁铁? 如何判断磁铁的极性 就是两块磁铁,非常靠近的时候,谁都挡不住黏在一起这是为啥呢? 磁极极性是什么意思? 数据结构上机实验编程:二叉树。要一套完整的代码程序!!!不要文字描述 数据结构二叉树C语言 共享存储柜每月需要多少流量 兼职靠谱大家有没有好的推荐吗? 我是19岁女生,想改一个时尚又有意义的网名。谢谢大家了! 我十九岁,性格:开朗活泼、霸道、任性,希望大家给我取个好听的网名谢谢 我单身十九了帮我起个好听点的单身网名,要吸引人的,谢谢 帮我想个十九岁男生低调网名 我的网名怎么可以有19个字? 需要非主流网名,男,19,有符号的,急需,谢谢 19岁的女生放什么网名合适 我今年十九,女孩,想寻一个明朗,有哲理的网名,但不是属于爱情的,可以有点颓废 给个好网名 本人是19岁 男 大家给点力吧 速度点 磁铁极性是什么 求数据结构算法平衡二叉树实现代码 一个c++的数据结构问题,二叉树中关于建立二叉树的代码,请大虾们帮忙写一下, 磁铁的极性 数据结构 如何创建一棵树,请给出c语言详细代码,谢谢 磁铁断后极性如何变化 c语言数据结构:怎么建立一个二叉树? 磁铁的极性怎样检测 磁石和磁铁,磁铁有极性,那磁石有极性吗? 电磁铁有极性吗?如何改变电磁铁的极性呢? 小磁铁可以拼出一个单向极性的磁铁球吗? 磁铁如何判断他的极性 异型磁铁如何判断磁极? 福特探险者加满92多少钱 红警3战术 求红警3各个国家的特点,缺点并附带最佳战术!!! 红色警戒3关于战术问题 红警三盟军战术 红色警戒3的战术、打法 红色警戒3战术