《数据结构二叉排序树实验报告》由会员分享,可在线阅读,更多相关《数据结构二叉排序树实验报告(7页珍藏版)》请在装配图网上搜索。

1、实验报告课程名:数据结构(C语言版)实验名:二叉排序树姓名: 班级: 学号: 撰写时间:2014.12.18一 实验目的与要求1. 掌握二叉排序树上进行插入和删除的操作2. 利用 C 语言实现该操作二 实验内容 对于一个线形表, 利用不断插入的方法, 建立起一株二叉排序树 从该二叉排序树中删除一个叶子节点, 一个只有一个子树的非叶子节,一个有两个子树的非叶子节点。三 实验结果与分析#include #include /二叉查找树结点描述 typedef int KeyType; typedef struct Node KeyType key; /关键字 struct Node * left; 。

2、/左孩子指针 struct Node * right; /右孩子指针 struct Node * parent; /指向父节点指针 Node,*PNode; /往二叉查找树中插入结点 /插入的话,可能要改变根结点的地址,所以传的是二级指针 void inseart(PNode * root,KeyType key) /初始化插入结点 PNode p=(PNode)malloc(sizeof(Node); p-key=key; p-left=p-right=p-parent=NULL; /空树时,直接作为根结点 if(*root)=NULL) *root=p; return; /插入到当前结点(。

3、*root)的左孩子 if(*root)-left = NULL & (*root)-key key) p-parent=(*root); (*root)-left=p; return; /插入到当前结点(*root)的右孩子 if(*root)-right = NULL & (*root)-key parent=(*root); (*root)-right=p; return; if(*root)-key key) inseart(&(*root)-left,key); else if(*root)-key right,key); else return; /查找元素,找到返回关键字的结点指。

4、针,没找到返回NULL PNode search(PNode root,KeyType key) if(root = NULL) return NULL; if(key root-key) /查找右子树 return search(root-right,key); else if(key key) /查找左子树 return search(root-left,key); else return root; /查找最小关键字,空树时返回NULL PNode searchMin(PNode root) if(root = NULL) return NULL; if(root-left = NULL。

5、) return root; else /一直往左孩子找,直到没有左孩子的结点 return searchMin(root-left); /查找最大关键字,空树时返回NULL PNode searchMax(PNode root) if(root = NULL) return NULL; if(root-right = NULL) return root; else /一直往右孩子找,直到没有右孩子的结点 return searchMax(root-right); /查找某个结点的前驱 PNode searchPredecessor(PNode p) /空树 if(p=NULL) return。

6、 p; /有左子树、左子树中最大的那个 if(p-left) return searchMax(p-left); /无左子树,查找某个结点的右子树遍历完了 else if(p-parent = NULL) return NULL; /向上寻找前驱 while(p) if(p-parent-right = p) break; p=p-parent; return p-parent; /查找某个结点的后继 PNode searchSuccessor(PNode p) /空树 if(p=NULL) return p; /有右子树、右子树中最小的那个 if(p-right) return search。

7、Min(p-right); /无右子树,查找某个结点的左子树遍历完了 else if(p-parent = NULL) return NULL; /向上寻找后继 while(p) if(p-parent-left = p) break; p=p-parent; return p-parent; /根据关键字删除某个结点,删除成功返回1,否则返回0 /如果把根结点删掉,那么要改变根结点的地址,所以传二级指针 int deleteNode(PNode* root,KeyType key) PNode q; /查找到要删除的结点 PNode p=search(*root,key); KeyType 。

8、temp; /暂存后继结点的值 /没查到此关键字 if(!p) return 0; /1.被删结点是叶子结点,直接删除 if(p-left = NULL & p-right = NULL) /只有一个元素,删完之后变成一颗空树 if(p-parent = NULL) free(p); (*root)=NULL; else /删除的结点是父节点的左孩子 if(p-parent-left = p) p-parent-left=NULL; else /删除的结点是父节点的右孩子 p-parent-right=NULL; free(p); /2.被删结点只有左子树 else if(p-left & !。

9、(p-right) p-left-parent=p-parent; /如果删除是父结点,要改变父节点指针 if(p-parent = NULL) *root=p-left; /删除的结点是父节点的左孩子 else if(p-parent-left = p) p-parent-left=p-left; else /删除的结点是父节点的右孩子 p-parent-right=p-left; free(p); /3.被删结点只有右孩子 else if(p-right & !(p-left) p-right-parent=p-parent; /如果删除是父结点,要改变父节点指针 if(p-parent 。

10、= NULL) *root=p-right; /删除的结点是父节点的左孩子 else if(p-parent-left = p) p-parent-left=p-right; else /删除的结点是父节点的右孩子 p-parent-right=p-right; free(p); /4.被删除的结点既有左孩子,又有右孩子 /该结点的后继结点肯定无左子树(参考上面查找后继结点函数) /删掉后继结点,后继结点的值代替该结点 else /找到要删除结点的后继 q=searchSuccessor(p); temp=q-key; /删除后继结点 deleteNode(root,q-key); p-key=temp; return 1; /创建一棵二叉查找树 void create(PNode* root,KeyType *keyArray,int length) int i; /逐个结点插入二叉树中 for(i=0;ikey); printf(%dn,searchSuccessor(root)-key); printf(%dn,searchMin(root)-key); printf(%dn,searchMax(root)-key); printf(%dn,search(root,13)-key); return 0; 图1:二叉树排序实验结果。

数据结构题及c语言版实验报告排序,数据结构二叉排序树实验报告相关推荐

  1. 数据结构题及c语言版4.31答案,数据结构参考题及答案修正版.doc

    <数据结构与算法>2015-2016学年第1学期考试复习题 该版纠错题有:7,16,22 选择题(下面各小题有一个正确答案,请将正确答案的编号填写在各小题的括号内). 1.在一棵具有5层的 ...

  2. c语言数据结构算法设计题,数据结构题集(C语言版)算法设计题答案[].doc

    数据结构题集(C语言版)算法设计题答案[].doc 第一章 绪论 1.16 void print_descending(int x,int y,int z)// 按从大到小顺序输出三个数 { scan ...

  3. 数据结构题及c语言版答案9.14,十套数据结构试题+答案+难题解析(精校版)

    十套数据结构试题+答案+难题解析(精校版) 更新时间:2017/2/9 10:47:00  浏览量:643  手机版 数据结构试卷(一) 一.单选题(每题 2 分,共20分) 1. 栈和队列的共同特点 ...

  4. 数据结构题及c语言版答案周桂红版,数据结构习题与答案.pdf

    第 1 章 绪 论 课后习题讲解 1. 填空 ⑴( )是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理. [解答]数据元素 ⑵( )是数据的最小单位,( )是讨论数据结构时涉及的最小数据 ...

  5. 数据结构题及c语言版答案第七章,数据结构第七章习题答案

    第七章 图 1.下面是一个图的邻接表结构,画出此图,并根据此存储结构和深度优先搜索算法写出从C开始的深度优先搜索序列. 0 A 1 3 ^ 1 B 3 5 ^ 2 C 3 0 ^ 3 D 4 ^ 4 ...

  6. 数据结构题及c语言版严第七章答案,数据结构第七章习题答案.doc

    数据结构第七章习题答案 PAGE PAGE 9 第7章 <图>习题参考答案 一.单选题(每题1分,共16分) ( C )1. 在一个图中,所有顶点的度数之和等于图的边数的 倍. A.1/2 ...

  7. 数据结构题集c语言版第七章答案,数据结构题集(C语言版)答案 - 严蔚敏编著...

    C Temp); ListMinus_L(A Temp D); } 2.30 要求同2.29题 试对单链表编写算法 请释放A表中的无用结点空间 解: // 在A中删除既在B中出现又在C中出现的元素 并 ...

  8. 《数据结构与算法 C语言版》—— 2.5上机实验

    本节书摘来自华章出版社<数据结构与算法 C语言版>一 书中的第2章,第2.5节,作者:徐凤生,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 2.5上机实验 实 ...

  9. 数据结构c语言版题库编程,数据结构习题库(c语言版)

    <数据结构习题库(c语言版)>由会员分享,可在线阅读,更多相关<数据结构习题库(c语言版)(104页珍藏版)>请在人人文库网上搜索. 1.wages in arrears. 2 ...

最新文章

  1. 第十一周项目实践1 图基本算法库
  2. 复旦 哈工大计算机学院,国内高校中哈工大和上交复旦在一个档次吗?从这些方面看你就知道...
  3. 2020最后一天,送出家里书架全部好书,随意挑
  4. ASP.NET Core 2.1中基于角色的授权
  5. Spring Security原理分析
  6. vm虚拟机联网最简单的方式
  7. java 解析/操作 xml 几种常用方式 xml的增加/删除/修改
  8. 算法大赛十强战队解题方案大公开!【附PPT下载】
  9. 认识position=fixed
  10. 使用C#创建ActiveX控件(译文)
  11. IT基础架构规划方案一(网络系统规划)
  12. SAP 之定义工厂(Plant)
  13. Nginx复习总结学习总结
  14. 群晖java安装失败_群晖NAS安装Jenkins
  15. Elastic:运用 Elastic Maps 实时跟踪,可视化资产分布及地理围栏告警(二)
  16. 利用Vultr主机安转宝塔Web面板搭建wordpress博客建站教程
  17. c语言如何输出字母锥子塔,C語言课堂练习.doc
  18. 电机标幺化、PI标幺化、锁相环PLL标幺化 详解电机模型相关标幺化处理
  19. ECC/DH 和 ECDH
  20. Revit二次开发环境配置(Revit 2020 +Visual Studio 2019)

热门文章

  1. 不礼让行人怎么抓拍的_【交通违法曝光2019年第11期】梅河口市公安局交警大队对电子警察抓拍的88台机动车不礼让行人车辆曝光如下...
  2. linux 6.8 安装教程,CentOS 6.8 7.2 安装图解详细教程
  3. python输入年份月份输出天数_6.2(输入年份 月份 输出该月天数)
  4. Codeforces Round #420 E
  5. pandas之数据结构
  6. 《DSP using MATLAB》示例Example7.20
  7. fixed 定位 苹果手机输入框触发时内容全部隐藏
  8. cuda-convnet在Ubuntu12.04+CUDA5.5下的配置
  9. .Net 中DataSet和DataTable的 区别与联系
  10. 公司的一些SEO面试题