目录

  • 1 第0章 课程概述
    • 1.1 课程介绍
    • 1.2 课前调查问卷
    • 1.3 学习目标
    • 1.4 教学日历
    • 1.5 课程考核
    • 1.6 课程答疑与反馈
    • 1.7 课程资料
    • 1.8 课前C语言知识巩固
    • 1.9 IT学子成长指导
    • 1.10 感谢
  • 2 第1章 绪论
    • 2.1 本章学习目标与支撑资源
    • 2.2 数据结构研究的内容
    • 2.3 基本概念和术语
    • 2.4 算法和算法分析
    • 2.5 上机必学:类C语言描述算法
    • 2.6 章节测验
  • 3 第2章 线性表
    • 3.1 本章学习目标
    • 3.2 线性表的定义和特点
    • 3.3 线性表的顺序表示与实现
    • 3.4 单链表
    • 3.5 循环链表及双向链表
    • 3.6 线性表的应用
    • 3.7 上机综合实训一:线性表的基本操作
    • 3.8 章节测验
    • 3.9 课程回放
  • 4 第3章 栈和队列
    • 4.1 本章学习目标
    • 4.2 栈
    • 4.3 栈的应用举例
    • 4.4 栈与递归
    • 4.5 队列
    • 4.6 上机实训二:栈的应用
    • 4.7 章节测验
    • 4.8 课程回放
  • 5 第4章   串、数组和广义表
    • 5.1 本章学习目标
    • 5.2 串(字符串String)
    • 5.3 数组
    • 5.4 广义表
    • 5.5 章节测验
  • 6 第5章 树和二叉树
    • 6.1 本章导学
    • 6.2 树的基本概念
    • 6.3 二叉树的定义、性质和存储结构
    • 6.4 二叉树的遍历及应用
    • 6.5 线索化二叉树
    • 6.6 哈夫曼树
    • 6.7 树、森林和二叉树
    • 6.8 综合实训
    • 6.9 章节测验
  • 7 第6章 图
    • 7.1 图的定义和基本术语
    • 7.2 图的存储结构
    • 7.3 图的遍历
    • 7.4 最小生成树
    • 7.5 最短路径
    • 7.6 拓扑排序与关键路径
    • 7.7 章节测验
    • 7.8 课程回放
  • 8 第7章 查找
    • 8.1 章节导学
    • 8.2 静态表的查找
    • 8.3 树表的查找
    • 8.4 散列表的查找
    • 8.5 章节测验
  • 9 第8章 排序
    • 9.1 排序导学
    • 9.2 插入排序
    • 9.3 交换排序
    • 9.4 选择排序
    • 9.5 归并排序
    • 9.6 基数排序
    • 9.7 各种内部排序比较
    • 9.8 章节测验
  • 10 算法分析与设计
    • 10.1 第1章算法基础
    • 10.2 第2章分治算法
    • 10.3 第3章递归算法
    • 10.4 第4章贪心算法
    • 10.5 第5章回溯算法
    • 10.6 第6章动态规划算法*
    • 10.7 第7章图的基本操作
    • 10.8 Python常见问题及解决方案
综合实训

请大家在实验前自学一下张教授的指引:



            广 州 商 学 院

2019学年—2020学年第2学期 数据结构实验任务书四

专业名称:  软件技术    实验学时:       2    

课程名称:数据结构      任课教师:            

实验题目:二叉树的基本操作                      

实验环境:   Dev C++                     

实验目的

1.掌握二叉树的定义;

2.掌握二叉树的基本操作,如二叉树的建立、遍历、结点个数统计、树的深度计算等。

实验内容:

用递归的方法实现以下算法:

1.以二叉链表表示二叉树,建立一棵二叉树(算法5.3);

2.输出二叉树的中序遍历结果(算法5.1);

3.输出二叉树的前序遍历结果(见讲稿);

4.输出二叉树的后序遍历结果(见讲稿);

5.计算二叉树的深度(算法5.5);

6.统计二叉树的结点个数(算法5.6);

7.统计二叉树的叶结点个数;

8.统计二叉树的度为1的结点个数;

9输出二叉树中从每个叶子结点到根结点的路径。

 

选做内容

1.交换二叉树每个结点的左孩子和右孩子;

2.设计二叉树的双序遍历(DblOrderTraverse)算法(双序遍历是指对于二叉树的每一个结点来说,先访问这个结点,再按双序遍历它的左子树,然后再一次访问这个结点,接下来按双序遍历它的右子树)。

 

实验提示

7.统计二叉树的叶结点个数

int LeafNodeCount(BiTree T ){

        如果是空树,则叶子个数为0;

如果是叶子结点,则叶子结点个数为1(如何表示叶子结点???)

否则叶结点个数为左子树的叶结点个数+右子树的叶结点个数

}

实验要求

(1) 程序要具一定的健壮性,即当输入数据非法时,程序也能适当地做出反应。

(2) 程序要做到界面友好,在程序运行时用户可以根据相应的提示信息进行操作。

(3) 根据实验报告模板详细书写实验报告。

(4) 通过超星学习通的作业模块上传实验报告。实验报告命名为学号-姓名-S4,如20180001-封清扬-S4。