二叉树

内容

实现二叉树的创建算法与中序列遍历算法。步骤如下:

  1. 将二叉树模拟成完全二叉树,从根结点开始对所有结点进行编号,编号从1开始,在运行过程中输入结点对应的编号和值,最后以编号i=0,结点值x=’$’为循环结束条件;
  2. 中序遍历已建立的二叉树,并输出遍历结果,中序遍历算法可选择递归和非递归方法。

实验代码

GOGOGO!!!

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<Stdlib.h>
#include<memory.h>
#define OK 1                      //宏定义
#define ERROR -1
#define OVERFLOW -2
#define MAXSIZE 100
----------------------------------
typedef int ElemType;
typedef int Status;
----------------------------------
typedef struct Node              //结构体
{ElemType data;struct Node *lch, *rch;int num;
}TNode;typedef struct BiTree
{TNode *root;
}Tree;void test();
Status Init_SqBiTree(Tree *T);     //初始化二叉树
Status Creat_SqBiTree(Tree *T);    //顺序存储创建二叉树
void InOder_Traverse(TNode *T);    //中序递归遍历二叉树Status Init_SqBiTree(Tree *T)
{T->root=(TNode*)malloc((MAXSIZE+1)*sizeof(TNode));memset(T->root, 0, (MAXSIZE + 1)*sizeof(TNode));return OK;
}Status Creat_SqBiTree(Tree *T)
{int len;int i = 0;                            //计算结点个数int num;                              //结点编号ElemType e;                           //结点数据值while (1){printf("请输入结点位置:");scanf("%d", &num);fflush(stdin);printf("请输入当前节点的数据:");scanf("%d",&e);fflush(stdin);if (num == 0 || e == '$')break;T->root[i+1].num=num;T->root[i+1].data = e;i++;}len = i;for (i = 1; 2 * i <= len; i++){T->root[i].lch = &(T->root[2 * i]);}for (i = 1; (2 * i +1)<= len; i++){T->root[i].rch = &(T->root[2 * i+1]);}return OK;
}void InOder_Traverse(TNode *T)
{if (T!=NULL){InOder_Traverse(T->lch);printf(" %d ",T->data);InOder_Traverse(T->rch);}
}int main()
{//test();Tree T;Init_SqBiTree(&T);Creat_SqBiTree(&T);printf("中序递归遍历:");InOder_Traverse(T.root + 1);printf("\n");return 0;
}void test()
{Tree T;Init_SqBiTree(&T);Creat_SqBiTree(&T);InOder_Traverse(T.root+1);
}

实现结果

顺序存储一个二叉树序列:

中序递归遍历该序列:

运行结果:

总结

日有所获!!!!!!!!!!!!

C语言——二叉树的创建与遍历相关推荐

  1. C语言二叉树的创建与遍历

    二叉树的创建与遍历 文章目录 二叉树的创建与遍历 前言 一.二叉树的结构 二.二叉树创建和三种遍历 1. 2.前序遍历 3.中序遍历 4.后序遍历 5.测试代码 总结 前言 二叉树(binary tr ...

  2. 二叉树的创建和遍历-C语言实现

    二叉树的创建和遍历-C语言实现 链式存储结构 struct BinaryTreeNode {//数据char data;//左子树BinaryTreeNode *leftChild;//右子树Bina ...

  3. c语言二叉树的生成,C语言实现二叉树的创建以及遍历(递归)

    C语言实现二叉树的创建以及遍历 #include typedef char ElemType; typedef struct BiTNode { ElemType data; struct BiTNo ...

  4. C语言二叉树曲折级顺序遍历(附完整源码)

    C语言二叉树曲折级顺序遍历 曲折级顺序遍历 C语言二叉树曲折级顺序遍历完整源码(定义,实现,main函数测试) 曲折级顺序遍历 Given a binary Tree 1/ \2 3/ \ / \4 ...

  5. C语言二叉树的逆向有序遍历(附完整源码)

    C语言二叉树的逆向有序遍历 C语言二叉树的逆向有序遍历完整源码(定义,实现,main函数测试) C语言二叉树的逆向有序遍历完整源码(定义,实现,main函数测试) #include <iostr ...

  6. python二叉树的创建与遍历

    二叉树的基本概念: 一个结点的层次直观上来说就是其所在的行,其中根结点层次为1(第一行),其子结点层次为2(第二行),以此类推 二叉树的深度(高度):指的是二叉树中的最大叶子结点所在的层.二叉树的深度 ...

  7. c语言二叉树的遍历菜单系统,C语言二叉树的三种遍历方式的实现及原理

    C语言二叉树的三种遍历方式的实现及原理 发布时间:2020-10-03 19:43:57 来源:脚本之家 阅读:63 作者:看雪. 二叉树遍历分为三种:前序.中序.后序,其中序遍历最为重要.为啥叫这个 ...

  8. c语言以顺序结构存储的二叉树的非递归遍历,C语言二叉树的非递归遍历实例分析...

    本文以实例形式讲述了C语言实现二叉树的非递归遍历方法.是数据结构与算法设计中常用的技巧.分享给大家供大家参考.具体方法如下: 先序遍历: void preOrder(Node *p) //非递归 { ...

  9. [******] 树问题:普通二叉树的创建与遍历

    1. 二叉树的创建 String pre_str = "1,2,4,8,-1,-1,9,-1,-1,5,-1,-1,3,6,-1,10,-1,-1,7,-1,-1";//先序输入S ...

最新文章

  1. 【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | 通信场景 | Channel 通信机制 | Channel 支持的通信数据类型 | Channel 类型 )
  2. 获取Table选中行数据(Table篇二)
  3. SVN目录结构及作用
  4. ant文件放在ps的哪里_ant design vue按需导入icons
  5. SQL Server 索引和表体系结构(三)
  6. 技术动态 | ACL 2019 知识图谱的全方位总结
  7. 修复100年前北京晚清影像,和马斯克谈两亿的项目,AI技术的底层逻辑是什么?...
  8. 回溯算法——复原IP地址(Leetcode 93)
  9. 11. 瞬时响应:网站的高性能架构
  10. iOS-常用宏定义大全
  11. Java实验-输出希腊字母表
  12. Mac如何关闭开机启动项?
  13. 资源池(数据库连接池,内存池,线程池)
  14. 使用diskpart命令修复损坏的U盘
  15. matlab c2d tustin,Matlab中的c2d函数用法以及绘制传函的Bode图
  16. 一个程序员应该怎样去学习和掌握计算机英语呢
  17. 软件工程毕业设计课题(78)微信小程序毕业设计PHP校园食堂就餐预约小程序系统设计与实现
  18. linux var mqm权限,Linux MQ中间件/var/mqm文件系统结构与错误日志分析
  19. ubuntu编译opencv-contrib
  20. neo4j基础系列教程

热门文章

  1. Python创建动态二维数组
  2. 被Photoshop揉皱的青蛙王子
  3. opencv图像特效之油画特效
  4. 银河w6+北斗40度+土星 中
  5. 项目资金预算表编制说明
  6. 手写MBR,笔记本成功从U盘引导(心路版)
  7. 阿里云账号企业实名认证和个人有什么区别?
  8. PLSQL中存储过程调试
  9. nginx 二十分钟入门
  10. 华为鸿蒙系统128g多少钱,华为宣布鸿蒙OS 2.0开源!明年4月将面向内存128MB-4GB设备开源...