目录

  • 1 第一单元(说课、绪论)
    • 1.1 说课
    • 1.2 数据结构前提知识(c语言程序基础)
    • 1.3 讲义+课件
    • 1.4 知识点讲解(微视频)
    • 1.5 实验一:抽象数据类型三元组基本操作的实现
    • 1.6 单元测试
  • 2 第二单元(线性表)
    • 2.1 讲义
    • 2.2 顺序表讲解
    • 2.3 实验二:用顺序表实现图书管理
    • 2.4 链式结构讲解
    • 2.5 实验三:用单循环链表实现约瑟夫环问题
    • 2.6 线性表的应用
    • 2.7 单元测试
  • 3 第三单元(栈和队列)
    • 3.1 讲义
    • 3.2 栈结构讲解
    • 3.3 实验四:用栈检测括号的匹配
    • 3.4 栈的应用-表达式
    • 3.5 实验五:算术表达式求值
    • 3.6 队列结构讲解
    • 3.7 栈和队列的应用
    • 3.8 单元测试
  • 4 第四单元(字符串)
    • 4.1 讲义
    • 4.2 串讲解
    • 4.3 实验六:实现串的基本操作
    • 4.4 单元测试
  • 5 第五单元(数组与广义表)
    • 5.1 讲义
    • 5.2 数组讲解
    • 5.3 广义表讲解
    • 5.4 实验七:稀疏矩阵的三元组表示和实现
    • 5.5 单元测试
  • 6 第六单元(二叉树)
    • 6.1 讲义
    • 6.2 本章知识点
      • 6.2.1 1、树的顺序存储
      • 6.2.2 2、二叉树的遍历与线索
      • 6.2.3 3、树与森林
    • 6.3 实验八:二叉树的创建与遍历
    • 6.4 赫夫曼树与应用
    • 6.5 补充实验:二叉树中的递归算法
    • 6.6 单元测试
  • 7 第七单元(图)
    • 7.1 讲义
    • 7.2 图的定义与存储
    • 7.3 图的遍历
    • 7.4 图的连通(最小生成树)
    • 7.5 图的应用
    • 7.6 实验十:用深度和广度优先搜索对用邻接表表示的图做遍历
    • 7.7 单元测试
  • 8 第八单元(动态存储管理)
    • 8.1 讲义(选学)
  • 9 第九单元(查找)
    • 9.1 讲义
    • 9.2 静态查找
    • 9.3 动态查找
    • 9.4 实验十一:实现折半查找算法
    • 9.5 单元测试
  • 10 第十单元(排序)
    • 10.1 讲义
    • 10.2 排序微视频
    • 10.3 实验十二:实现快速排序算法
    • 10.4 单元测试
    • 10.5 调查问卷
  • 11 综合项目
    • 11.1 贪吃蛇
实验八:二叉树的创建与遍历
  • 1
  • 2


  • 实验八:二叉树的创建于应用(2课时)

树和二叉树是应用极为广泛的数据结构,也是这门课程的重点。本次实验将操作进一步集中在遍历操作上,因为遍历操作是其他众多操作的基础。 

 (一)问题描述 很多涉及二叉树操作的算法都是以遍历操作为基础的。试写一程序,实现对二叉树的遍历。 1.分别用三种递归方法:先序、中序和后序。

 2.利用队列按层次遍历。注意正确使用队列中的定义和函数。 其实,二叉树也可以实现非递归的遍历,有兴趣的可以试着写写,书上有中序非递归遍历算法。 

 (二)基本要求 

 1.用二叉链表的形式存储一棵二叉树,见书上Create()函数。 注意输入先序前必须补齐空的结点,可用 # 号补齐。 

 2. 分别用三种递归方法:先序、中序和后序输出结果。 利用队列按层次遍历。注意正确使用队列中的定义和函数 

 (三)测试数据 请至少准备3棵不同形态二叉树进行测试。 可自拟,也可采用书上的。 

 (四)实现提示 二叉树的建树过程参照131页算法6.4,下图的二叉树,输入的先序序列应为 abd##e#g##cf###,而不是abdegcf。

 (五)拓展学习:1.求二叉树的层次(高度) 2.求二叉树的叶子个数 3.求二叉树的总结点个数;

至少选择一个实现。

按要求提交实验报告。

以下是参考代码:

int level(BiTree T) /*计算二叉树的层次*/

{

 int l1,l2;

 if(T==NULL) return 0;

 else{l1=level(T->lchild);

      l2=level(T->rchild);

      return l1>l2?l1+1:l2+1;

 }

}