中北大学
数据结构
课程设计说明书
2011年12月20日
1.设计任务概述:
功能描述:
(1)以回车('\n')为输入结束标志,输入数列L,生成一棵二叉排序树T;
(2)对二叉排序树T作中序遍历,输出结果;
(3)输入元素x,查找二叉排序树T,若存在含x的结点,则删除该结点,并作中序遍历(执行操作2);否则输出信息“无x”。
2.本设计所采用的数据结构
二叉树及二叉链表
3.功能模块详细设计
详细设计思想
建立二叉排序树采用边查找边插入的方式。
查找函数采用递归的方式进行查找。
如果查找到相等的则插入其左子树。
然后利用插入函数将该元素插入原树。
对二叉树进行中序遍历采用递归函数的方式。
在根结点不为空的情况下,先访问左子树,再访问根结点,最后访问右子树。
删除结点函数,采用边查找边删除的方式。
如果没有查找到,进行提示;如果查找到结点则将其左子树最右边的节点的数据传给它,然后删除其左子树最右边的节点。
核心代码
(1)主菜单模块
int main(){
LNode root=NULL;
int Num,a,x;
printf("\n\n
*******************************\n");
printf(" ************主菜单*************\n");
printf(" *1:进行中序排列*\n");
printf(" *2:进行删除操作
*\n");
printf(" *3:退出*\n");
printf("
*******************************\n");
printf("请输入要进行操作的数字以0结束:\n");
运行结果
(3)中序遍历模块
void view(LNode p){
程设计心得、存在问题及解决方法
通过这次课程设计,我进一步的懂得了二叉链表的建立方法,进一步的了解了二叉排序树的构造方法。
对函数的构造以及调用有了更进一步的掌握,让我在调试程序是有了一定的经验。
多考虑算法的可行性。
在遇到问题是认真考虑。
同时让我意识到数据结构在编程中的重要作用。
算法的优越性对程序的重要性。
让我在调试程序是有了一定的经验。