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

c语言 二叉树

发布网友 发布时间:2022-04-25 13:58

我来回答

1个回答

热心网友 时间:2023-10-05 13:30

该题用二叉树的顺序存储结构比较容易实现。

#include <stdio.h>
#include <math.h>
#include <string.h>
char Bitree[100];
void InitTree( )
{
    int i;
    for(i = 0; i < 100; i++)
        Bitree[i] = 0;
}
void Create( ) {  /*创建顺序存储表示的二叉树*/
    char str[10], ch;
    int i, pindex, index, level;
    scanf("%s", str);  /*输入结点数据,包括层次信息*/
    if(strcmp(str, "0") == 0)   /*如果是结束符就结束*/
        return;
    ch = str[strlen(str) - 1];  /*取出结点值*/
    for(level = 0; str[level] == '-'; level++);  /*确定所在层次信息,根结点定为第1层*/
    level = level + 1;
    for(pindex=pow(2,level-1)-1; (pindex>1)&&!Bitree[pindex]; pindex--); /*找双亲编号*/
    if(pindex == 0) index = 1;  /*如果双亲编号为0,则当前结点为根结点*/
    else index = 2 * pindex; /*否则,左孩子编号等于双亲编号乘以2*/
    if(Bitree[index]) index++;  /*如果左孩子已经有了,则当前是双亲的右孩子*/
    Bitree[index] = ch;
    Create( );
}
void PreOrder(int root) {   /*前序遍历*/
    if(Bitree[root] == 0 || Bitree[root] == '*')   /*如果根为空*/
        return;
    printf("%c\t", Bitree[root]);
    PreOrder(root * 2);
    PreOrder(root * 2 + 1);
}
void InOrder(int root) {  /*中序遍历*/
    if(Bitree[root] == 0 || Bitree[root] == '*')
        return;
    InOrder(root * 2);
    printf("%c\t", Bitree[root]);
    InOrder(root * 2 + 1);
}
void PostOrder(int root) {  /*后序遍历*/
    if(Bitree[root] == 0 || Bitree[root] == '*')
        return;
    PostOrder(root * 2);
    PostOrder(root * 2 + 1);
    printf("%c\t", Bitree[root]);
}
void main( ) {
    Create();
    PreOrder(1);
    printf("\n");
    InOrder(1);
    printf("\n");
    PostOrder(1);
    printf("\n");
}

运行结果

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 计算机c语言中 什么是二叉树 emotional是什么意思 什么叫emo Emotional中文怎么读 emotional好像有三种意思都是什么? emo 什么意思? Emotional是什么意思啊 emotionad中文 Emotional是什么意思? 我emotional了是什么意思 emonational中文是什么? 英语emotional什么意思 “emotional”什么意思? 通过滴滴打出租车价格是不是比直接叫出租车贵些 滴滴打车贵吗? 多个抖音号在一个直播影响权重吗 滴滴打车叫出租车比路边叫的便宜么? 抖音只是偶尔直播,不天天直播,会不会影响权重 抖音直播互动软件影响权重么 抖音权重低开直播有用吗 计算机c语言中什么是“二叉树”? 数据结构c二叉树的算法 c语言二叉树什么意思?学习要有什么基础? c二叉树 建立 C语言二叉树 c语言二叉树代码求解 c语言 c语言 二叉树构造问题 关于c语言二叉树 c语言二叉树结点 C语言二叉树的应用 C语言二叉树的创建和遍历 c语言二叉树的问题 怎么查看自己在QQ防沉迷上绑定的身份证号码? 如何用专业GPU软件辨别显卡的级别 专业显卡和游戏显卡的区别? 专业显卡和普通显卡的区别 专业显卡跟普通显卡有什么区别? 专业显卡和游戏显卡究竟有什么区别 什么情况下需要用专业图形显卡? 专业显卡与普通显卡的区别 作图的显卡