浙江大学城市学院实验报告
课程名称                   数据结构与算法                       
实验项目名称         实验五  二叉搜索树的基本操作               
学生姓名         专业班级 计算0    学号 30 
实验成绩二叉树中序遍历非递归算法         指导老师(签名 )              日期            
一. 实验目的和要求
1.掌握二叉搜索树的基本概念。
2.掌握二叉搜索树基本操作的实现。
二. 实验内容
1. 设在一棵二叉搜索树的每个结点的data域中,含有关键字key域和统计相同关键字元素个数的count域。当向该树插入一个元素时,若树中已有相同关键字值的结点,则使该结点的cou
nt域值增1,否则由该元素值生成一个新结点插入到该树中,并使其count域置为1。当向该树删除一个元素时,若树中该元素结点的count域值大于1,则使该结点的count域值减1,否则(count域值等于1)删除该结点。请编写程序实现该二叉搜索树的下述基本操作:
1 初始化该二叉搜索树void InitBSTree(BTreeNode *&bst);
2 以广义表形式输出该二叉搜索树(每个结点输出内容包括关键字值与相同元素个数值)void PrintBSTree(BTreeNode *bst);
3 插入一个元素到该二叉搜索树(用非递归算法实现) void Insert (BTreeNode *&bst, ElemType item);
4 从二叉搜索树中删除某个元素(用非递归算法实现) int Delete (BTreeNode *&bst , ElemType item)。
5 求该二叉搜索树的最大关键字值(用非递归算法实现)ElemType MaxBSTree(BTreeNode *bst)
把二叉搜索树的结构定义及基本操作实现函数存放在文件BSTree.h中。
2. 建立主程序文件test5.cpp在主函数main()中通过调用BSTree.h中的函数进行测试。提示:可以在主函数中首先初始化二叉搜索树;然后从键盘输入数据,通过循环调用插入算法建立二叉搜索树;再以广义表形式输出该二叉搜索树;输出二叉搜索树中的最大结点值;最后调用删除算法删除某元素,并输出删除后的二叉搜索树。
3. 填写实验报告,实验报告文件取名为report5.doc
4. 上传实验报告文件report5.doc与源程序文件BSTree.htest5.cpp到Ftp服务器上你自己的文件夹下。
二. 函数的功能说明及算法思路
void InitBSTree(BTreeNode *&bst):初始化该二叉搜索树
void PrintBSTree(BTreeNode *bst):通过指针对树遍历,从而输出二叉树
void Insert (BTreeNode *&bst, ElemType item):通过比较所插入数于树左右结点比较插入适当的位置。
int Delete (BTreeNode *&bst , ElemType item):用非递归算法实现删除某个元素。
ElemType MaxBSTree(BTreeNode *bst):通过各个结点的比较查最大数。
    包括每个函数的功能说明,及一些重要函数的算法实现思路
. 实验结果与分析
包括运行结果截图等
当搜索二叉树中有相同的数时,发现少了一个,求解
五. 心得体会
    通过此次编程,我就觉的除了删除某个结点的程序有些的难度,尤其是要用非递归的算法
来编写,本生编程能力就比较弱,需要和同学一起探讨,交流才能勉强写出来,不过这也是对自己的锻炼。
【附录----源程序】
Test5.Cpp
#include<stdio.h>
#include<iostream.h>
#include<stdlib.h>
typedef int ElemType;
struct BTreeNode

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。