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

求一个用C语言写的建立二叉树。并且先序中序后序遍历这个二叉树

发布网友 发布时间:2022-05-05 19:23

我来回答

3个回答

热心网友 时间:2022-06-27 23:38

其实这个程序很简单的。 代码如下:

#include<stdio.h>
#include<malloc.h>
#define MAX_TREE_SIZE 100
typedef struct {
int i;
}TElemType;
typedef struct BiTNode{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
int CreateBiTree(BiTree &T)
{
char ch;
scanf("%c",&ch);
getchar();
if(ch==' '||ch=='\n')
{
T=NULL;
}
else{
T=(BiTNode *)malloc(sizeof(BiTNode));
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return 1;
}//CreateBiTree()
int Visit(char ch)
{
printf("%c",ch);
return 1;
}
int PreOrderTraverse(BiTree T,int (* Visit)(char ch))
{
if(T)
{
if(Visit(T->data))
if(PreOrderTraverse(T->lchild,Visit))
if(PreOrderTraverse(T->rchild,Visit)) return 1;
}else return 1;
}
int InOrderTraverse(BiTree T,int (* Visit)(char ch))
{
if(T)
{
if(InOrderTraverse(T->lchild,Visit))
if(Visit(T->data))
if(InOrderTraverse(T->rchild,Visit)) return 1;
}else return 1;
}
int PostOrderTraverse(BiTree T,int(* Visit)(char ch))
{
if(T)
{
if(PostOrderTraverse(T->lchild,Visit))
if(PostOrderTraverse(T->rchild,Visit))
if(Visit(T->data)) return 1;
}else return 1;
}
void main()
{
BiTree T;
printf("从根节点输入二叉树,存储方式采用中序遍历,无分支请输入空格:\n");
CreateBiTree(T);
printf("先序遍历为:");
PreOrderTraverse(T,Visit);
printf("\n");
printf("中序遍历为:");
InOrderTraverse(T,Visit);
printf("\n");
printf("后序遍历为:");
PostOrderTraverse(T,Visit);
}

热心网友 时间:2022-06-27 23:38

推荐你看一下严蔚敏的数据结构(C语言版)那里讲的很详细。

热心网友 时间:2022-06-27 23:38

#include <stdio.h>
#include <malloc.h>
#include<stdlib.h>
//二叉树数据结构定义
typedef struct BiNode
{
char data;
struct BiNode *LChild;
struct BiNode *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));
}
}

//递归法先序遍历二叉树
void PreOrderTree(BiTree root)
{
if(root != NULL)
{
printf("%c ",root->data);
PreOrderTree(root->LChild);
PreOrderTree(root->RChild);
}
}
//递归法中序遍历二叉树
void InOrderTree(BiTree root)
{
if(root != NULL)
{
InOrderTree(root->LChild);
printf("%c ",root->data);
InOrderTree(root->RChild);
}
}
//递归法后序遍历二叉树
void PostOrderTree(BiTree root)
{
if(root != NULL)
{
PostOrderTree(root->LChild);
PostOrderTree(root->RChild);
printf("%c ",root->data);
}
}

void main()
{
BiTree BT;
printf("请输入先序序列:");
CreateBiTree(&BT);
//BT = CreateBiTree();
printf("\n递归方法实现如下:\n");
printf("\n先序遍历结果为:");
PreOrderTree(BT);
printf("\n中序遍历结果为:");
InOrderTree(BT);
printf("\n后序遍历结果为:");
PostOrderTree(BT);
printf("\n");
}
该代码是我做过的一个实验,经过验证的,是采用递归算法的。如果有疑问,可以提
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果手机微信怎么换漂亮字体(苹果手机微信怎么换行输入) 有什么好用的app转换字体 手写转文字的软件 erp可以看评论地址吗 淘宝评论url是什么意思? 揭秘:码牌支付风控升级,背后真相揭秘 电脑电视直播软件哪个好用什么软件好电脑看电视直播 潼南子同街学区是哪些 三极管BU406价格和参数? 火锅料放在冰柜忘了插电一个星期给会坏了吗 火锅的设备有哪些 C语言中二叉树的建立和遍历 梦见两棵树成十字倒在地上 二叉树的建立、中序遍历(用C语言实现) 二叉树的建立和遍历c语言的 男:梦见两棵树,树根连在一起,接相同的果子不同颜色,我在树下摘着吃 ? 梦见床旁边有两棵树 如何购买基金,需要开户吗,在哪个银行购买,最低购买多少? 请问中国农业银行代理的哪只基金较好. 我看好华夏的基金,可为什么它的净值都那么高? 做为大学生投资哪种金融产品比较好? 华夏行业精选基金现在净值是多少,现在还能申购吗? 管理系统中BI、EAM、PLM、ERP、CRM、DRP、OA、SCM、EAM缩略语。 别克君越空调电磁阀坏了怎么办 别克君越凸轮轴电磁阀影响油耗吗? 别克-君越 - 别克新君越变速箱电磁阀问题 别克君越喷油嘴使用寿命? 君越排气电磁阀功能何用? 别克君越v6vvt电磁阀什么时候打开 别克新君越豪雅突轮轴电磁阀为什么容易坏 OA中固定资产模块与EAM的区别是什么? 降血糖药物有哪些是没有副作用的呢 降血糖的药吃了有什么副作用 支付宝上面马上借钱,申请通过多久放款 真心空气能热水器怎么调温度 可以使嘴唇颜色变色的唇彩?? 梦见自己在家里客厅里挖出了好多5块钱地港币和现金怎么会事? 梦见从地下挖出现金和鸡蛋 考BEC还是托业好呢!? 怎样截图?截频? SQLITE中,如何合并多条记录的数据到一条记录的不同列中 电磁炉的工作原理是什么 win10联想一键恢复怎么用 住海边,榉木床,像木床,松木床哪一种比较好,家具哪一种抗潮湿 ? 南方的空气潮湿,木质的家具容易受潮吗? 请问哪种木材适合家具。特性要求:防虫,防暴晒,耐潮湿,硬度高,防腐,无特殊气味,尤其是不能有香气! 如何清洁榉木家具 实木家具如何应对潮湿的梅雨季? 纯实木家具在最适宜的使用环境下,空气湿度应该是多少? 实木家具受潮怎么办 语惊蛰的背景,墨明棋妙唱的