河池学院:《数据结构》课程电子教案(PPT教学课件)第9章 查找 9.3 树表的查找(1/2)

几种特殊树形结构—统称为树表。 这里的树表采用链式存储结构,由于链式存储结构既适合查找,也适合 数据修改,属于动态查找表。 对于动态查找表,不仅要讨论查找方法,还讨论修改方法。 1/81

1. 二叉排序树的定义 若它的左子树非空,则左子树上所有结点值(默认为结点关键字) 均小于根结点值。 若它的右子树非空,则右子树上所有结点值均大于根结点值。 左、右子树本身又各是一棵二叉排序树。 二叉排序树(简称BST)又称二叉查找(搜索)树,其定义为:二 叉排序树或者是空树,或者是满足如下性质的二叉树: 2/81

一棵二叉排序树示例: 4 2 1 3 5 7 6 8 根结点最左下结 点,即为关键字 最小的结点 根结点最右下结点,即 为关键字最大的结点 特点: 中序序列:1,2,3,4,5,6,7,8 中序序列是一个递增有序序列! 3/81

定义二叉排序树的结点类型如下: class BSTNode //二叉排序树结点类 { public int key; //存放关键字,假设关键字为int类型 public BSTNode lchild; //存放左孩子指针 public BSTNode rchild; //存放右孩子指针 BSTNode() //构造方法 { lchild=rchild=null; } } 4/81

设计二叉排序树类模板BSTClass public class BSTClass //二叉排序树类 { public BSTNode r; //二叉排序树根结点 private BSTNode f; //用于存放待删除结点的双亲结点 public BSTClass() //构造方法 { r=null; } //二叉排序树的基本运算算法 } 5/81

2. 二叉排序树的插入和生成 在根结点p的二叉排序树中插入关键字为k的结点的过程如下: (1)若p为空,创建一个key为k的结点,返回将它作为根结点。 (2)若kp.key,将k插入p结点的右子树中并且修改p的右子树。 (4)其他情况是k=p.key,说明树中已有关键字k,无须插入,直 接返回p。 6/81

public void InsertBST(int k) //插入一个关键字为k的结点 { InsertBST1(r,k); } private BSTNode InsertBST1(BSTNode p,int k) //在以p为根的BST中插入关键字为k的结点 { if (p==null) //空,新插入的元素为根结点 { p=new BSTNode(); p.key=k; } else if (kp.key) p.rchild=InsertBST1(p.rchild,k); //插入到p的右子树中 return p; } 7/81

创建二叉排序树是从一个空树开始,先创建根结点,以后每插入一个关 键字k,就调用一次InsertBST(k)算法将k插入到当前的二叉排序树中。 public void CreateBST(int[] a) //由关键字序列a创建一棵二叉排序树 { r=new BSTNode(); //创建根结点 r.key=a[0]; for (int i=1;i<a.length;i++) //创建其他结点 InsertBST1(r,a[i]); //插入关键字a[i] } 8/81

【例9.8】 已知一组关键字为 (25,18,46,2,53,39,32,4,74,67,60,11) 按表中的元素顺序依次插入到一棵初始为空的二叉排序树中,画出该二叉排 序树,并求在等概率的情况下查找成功的平均查找长度和查找不成功的平均 查找长度。 9/81

解:生成的二叉排序树如下。 25 18 2 46 4 11 39 53 32 74 67 60 25 18 46 2 53 39 32 4 74 67 60 11 生成的二 叉排序树 10/81
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第9章 查找 9.1 查找的基本概念 9.2 线性表的查找.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第8章 图 8.6 拓扑排序 8.7 AOE网与关键路径.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第8章 图 8.5 最短路径.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第8章 图 8.4 生成树和最小生成树.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第8章 图 8.3 图的遍历.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第8章 图 8.1 图的基本概念 8.2 图的存储结构.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第7章 树和二叉树 7.9 树算法设计和并查集.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第7章 树和二叉树 7.6 线索二叉树 7.7 哈夫曼树 7.8 二叉树与树、森林之间的转换.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第7章 树和二叉树 7.4 二叉树的层次遍历 7.5 二叉树的构造.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第7章 树和二叉树 7.3 二叉树先序、中序和后序遍历.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第7章 树和二叉树 7.2 二叉树.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第7章 树和二叉树 7.1 树.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第6章 数组和稀疏矩阵.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第5章 递归.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第4章 串.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第3章 栈和队列 3.2 队列.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第3章 栈和队列 3.1 栈.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第2章 线性表 2.5 线性表的应用.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第2章 线性表 2.3 线性表的链式存储结构 2.4 顺序表和链表的比较.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第2章 线性表 2.1 线性表的定义 2.2 线性表的顺序存储结构.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第9章 查找 9.3 树表的查找(2/2).pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第9章 查找 9.4 哈希表查找.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第10章 排序 10.1 排序的基本概念 10.2 插入排序 10.3 交换排序.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第10章 排序 10.4 选择排序.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第10章 排序 10.5 归并排序 10.6 基数排序 10.7 各种内排序方法的比较和选择.pptx
- 河池学院:《数据结构》课程电子教案(PPT教学课件)第10章 排序 10.8 外排序.pptx
- 《Python数据分析》课程电子教案(PPT课件)第1章 数据分析与可视化概述新.pptx
- 《Python数据分析》课程电子教案(PPT课件)第2章 Python编程基础.pptx
- 《Python数据分析》课程电子教案(PPT课件)第3章 NumPy数值计算基础.pptx
- 《Python数据分析》课程电子教案(PPT课件)第4章 pandas统计分析基础.pptx
- 《Python数据分析》课程电子教案(PPT课件)第5章 Pandas数据载入与预处理.pptx
- 《Python数据分析》课程电子教案(PPT课件)第6章 Matplotlib数据可视化基础.pptx
- 《Python数据分析》课程电子教案(PPT课件)第7章 利用Seaborn绘图.pptx
- 《Python数据分析》课程电子教案(PPT课件)第8章 pyecharts可视化.pptx
- 《Python数据分析》课程电子教案(PPT课件)第9章 时间序列数据分析.pptx
- 《Python数据分析》课程电子教案(PPT课件)第10章 SciPy科学计算.pptx
- 《R语言》课程教学资源(PPT课件)第01章 进入R的世界.pptx
- 《R语言》课程教学资源(PPT课件)第02章 R语言基础.pptx
- 《R语言》课程教学资源(PPT课件)第03章 R函数与流程控制.pptx
- 《R语言》课程教学资源(PPT课件)第04章.pptx
