二叉树排序树的建立和检索【数据结构实践报告】
来源:互联网 发布:穆斯林 知乎 编辑:程序博客网 时间:2024/05/22 12:38
数据结构实验报告
实验名称:实验五 二叉树排序树的建立和检索
学号:***
姓名:gnosed
实验日期:2017.11.10
一、实验目的
1、掌握二叉排序树的建立
2、对二叉排序树进行数据检索
二、实验具体内容
1、实验题目1:
(1)题目
构造一棵二叉排序树,并进行遍历,检索数据
要求:
1、输入数据构造二叉排序树
2、对构造好的二叉排序树进行中根序遍历
3、对构造好的二叉排序树进行数据检索
提示:
对二叉排序树进行中根序遍历的时候,获得的是排序序列
(2)分析
构造(以小根堆为例):
1)查找:
按二叉排序树的性质,查找并返回元素要插入的位置——父亲(叶)节点地址;
2)插入:对于给定序列的每个元素(无重复),
如果二叉排序树为空,创建根节点;
否则,执行1),将元素与返回的叶节点进行比较,若前者小则将其插入到后者的左子树,否则插入到右子树。
重复2),直到序列末尾。
验证:
对构造好的二叉排序树进行中序遍历,验证构造是否正确。
(3)实验代码
源代码:
#include<iostream>#include<string.h>#defineELEMTYPE int usingnamespace std; typedefstruct node* Pnode;typedefstruct node* Ptree;structnode{ ELEMTYPE x; Pnode llink,rlink;};intMAXN;//1)PnodesearchPnode(Ptree t,ELEMTYPE i){ if(t->llink==NULL&&t->rlink==NULL) return t; Pnode pre;//flag previous node while(t){ pre=t; if(i<t->x) t=t->llink; else t=t->rlink; } return pre;}//2)Ptreecreate(ELEMTYPE seq[]){ Pnode root=new struct node; root->x=seq[0]; root->llink=root->rlink=NULL; for(int i=1;i<MAXN;i++){ Pnode t=new struct node; t->x=seq[i]; t->llink=t->rlink=NULL; Pnode pre=searchPnode(root,seq[i]); if(seq[i]<pre->x)//linking pre->llink=t; else pre->rlink=t; } return root;}//recursionin order traversingvoidin_order(Ptree root){ if(!root) return; in_order(root->llink); cout<<root->x<<""; in_order(root->rlink);}intmain(){ cin>>MAXN;//input number of nodes ELEMTYPE seq[MAXN]; for(int i=0;i<MAXN;i++) cin>>seq[i]; cout<<"In order search of thetree: "; in_order(create(seq)); return 0;}
测试结果:
1053 7 10 1 4 8 -40 -5 0Inorder search of the tree: -40 -5 0 1 3 4 5 7 8 10 1455-88 45 32 1 56 44 30 23 -23 2 3 100 -101Inorder search of the tree: -101 -88 -23 1 2 3 23 30 32 44 45 55 56 100
三、实验小结
1. 二叉排序树的插入时间复杂度为O(n^2)
2. 检索二叉排序树最坏时间复杂度为O(n)
阅读全文
0 0
- 二叉树排序树的建立和检索【数据结构实践报告】
- 二叉树的建立与遍历【数据结构实验报告】
- 数据结构-二叉树的建立
- 数据结构:二叉树的建立和遍历(C#实现)
- 数据结构之二叉树的递归建立和遍历
- 数据结构之二叉树的递归建立和遍历(续)
- 【数据结构基础】二叉树的建立和递归遍历
- 常用数据结构-二叉树的链式存储、建立和遍历
- 关于“数据结构”,线索二叉树的建立和实现
- 数据结构课程设计报告 二叉树的应用
- 数据结构 二叉树的建立与遍历
- 数据结构之 平衡二叉树的建立
- 排序二叉树、查找、二分法查找、数据结构,实验报告
- 数据结构之排序二叉树递归建立,递归查找
- 数据结构--二叉树按层次建立和按层次输出二叉树的内容
- 基本数据结构:建立二叉树 和 二叉树的顺序遍历
- 复杂数据结构的排序和检索问题
- 【二叉树的建立和遍历】SDUTOJ 2136---数据结构实验之二叉树的建立与遍历
- nginx
- vue-awesome-swiper轮播图实践
- 杭电1257 之 最少拦截系统
- 记一次微信公众号爬虫的经历
- Android开发小结
- 二叉树排序树的建立和检索【数据结构实践报告】
- Python学习笔记之入门
- java集合list的三个子类
- 教你在windows安装linux虚拟机
- python 标准输出 sys.stdout 重定向
- SSM整合开发的小Demo----毕业设计管理系统之管理员模块
- 递归与尾递归
- cocos2d-x源码中的内存管理
- BeagleBone Black (ubuntu)(u-boot)使用串口