• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >数据结构 > 数据结构教程 第三十一课 动态查找表

数据结构教程 第三十一课 动态查找表

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2017-06-28

匿名通过本文主要向大家介绍了数据结构教程,数据结构教程李春葆,数据结构视频教程,数据结构教程第四版,c语言数据结构教程等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
</div>

教学目的: 掌握二叉排序树的实现方法

教学重点: 二叉排序树的实现

教学难点: 构造二叉排序树的方法

授课内容:

一、动态查找表的定义

动态查找表的特点是:

表结构本身是在查找过程中动态生成的,即对于给定值key,若表中存在其关键字等于key的记录,则查找成功返回,否则插入关键字等于key的记录。以政是动态查找表的定义:

ADT DymanicSearchTable{

数据对象D:D是具有相同特性的数据元素的集合。各个数据元素均含有类型相同,可唯一标识数据元素的关键字。

数据关系R:数据元素同属一个集合。

基本操作P:

InitDSTable(&DT);

DestroyDSTable(&DT);

SearchDSTable(DT,key);

InsertDSTable(&DT,e);

DeleteDSTable(&DT,key);

TraverseDSTable(DT,Visit());

}ADT DynamicSearchTable

二、二叉排序树及其查找过程

二叉排序树或者是一棵空树;或者是具有下列性质的二叉树:

1、若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;

2、若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;

3、它的左、右子树了分别为二叉排序树。

如果取二叉链表作为二叉排序树的存储结构,则上述查找过程如下:

BiTree SearchBST(BiTree T,KeyType key){

if(!T)||EQ(key,T->data.key)) return (T);

else if LT(key,T->data.key) return (SearchBST(T->lchild,key));

else return (SearchBST(T->rchild.key));

}//SearchBST

三、二叉排序树的插入和删除

二叉排序树是一种动态树表,其特点是,树的结构通常不是一资生成的,面是在查找过程中,当树中不存在关键字等于给定值的结点时再进行插入。新插入的结点一定是一个新添加的叶子结点,并且是查找不成功时查找路径上访问的最后一个结点的左孩子或右孩子结点。

Status SearchBST(BiTree T,KeyType key,BiTree f,BiTree &p){

if(!T) {p=f;return FALSE;}

else if EQ(key,T->data.key){ p=T;return TRUE;}

else if LT(key,T->data.key) SearchBsT(T->lchild,key,T,p);

else SearchBST(T->rchild,key,T,p);

}//SearchBST

插入算法:

Status InsertBST(BiTree &T,ElemType e){

if(!SearchBST(T,e.key,NULL,p){

s=(BiTree)malloc(sizeof(BiTNode));

s->data=e;s->lchild=s->rchild=NULL;

if(!p) T=s;

else if (LT(e.key,p->data.key) p->lchild=s;

else p->rchild=s;

return TRUE;

}

else return FALSE;

}//InsertBST

在二叉排序树中删除一个节点的算法:

Status DeleteBST(BiTree &T,KeyType key){

if(!T) return FALSE;

else{

if EQ(key,T->data.key) Delete(T);

else if LT(key,T->data.key) DeleteBST(T->lchild,key);

else DeleteBST(T->rchild,key);

return TRUE;

}

}

void Delete(BiTree &p){

if(!p->rchild){

q=p; p=p->lchild; free(q);

}

else if(!p->lchild){

q=p;p=p->rchild; free(q);

}

else{

//方法一:如图示

q=p;s=p->lchild;

while(s->rchild){q=s;s=s->rchild}//转左,然后向右到尽头

p->data=s->data; //s指向被删结点的"前驱"

if(q!=p)q->rchild=s->lchild; //重接*q的右子树

else q->lchild=s->lchild;//重接*q的左子树 (方法一结束)

//或可用方法二:

//q=s=(*p)->l;

//while(s->r) s=s->r;

//s->r=(*p)->r;

//free(*p);

//(*p)=q;

}

}

 2  下一页</div> </div> </div> </div> </div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 数据结构教程
  • 数据结构教程 第十课 栈的表示与实现
  • 数据结构教程 第九课 循环链表与双向链表
  • 数据结构教程 第八课 线性表的链式表示与实现
  • 数据结构教程 第七课 实验一 线性表的顺序存储实验
  • 数据结构教程 第六课 线性表的顺序表示和实现
  • 数据结构教程 第五课 线性表的类型定义
  • 数据结构教程 第三十五课 实验七 查找
  • 数据结构教程 第三十四课 插入排序、快速排序
  • 数据结构教程 第三十三课 哈希表(二)

相关文章

  • 2017-06-28数据结构C语言实现之二叉树
  • 2017-08-17面向对象编程(OOP)理解
  • 2017-06-28数据结构教程 第五课 线性表的类型定义
  • 2017-06-28链表的建立、插入和删除
  • 2017-06-28数据结构教程 第二十三课 二叉树的存储结构
  • 2017-06-28数据结构教程 第二十课 广义表
  • 2017-06-28九宫问题(八数码)求解过程动态演示
  • 2017-08-17验证哥德巴赫猜想
  • 2017-06-28数据结构教程 第十二课 实验二 循环链表实验
  • 2017-06-28数据结构教程 第十八课 数组的顺序表示与实现

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 数据结构教程 第六课 线性表的顺序表示和实现
    • C++ 成绩排名算法
    • java中实现希尔排序算法
    • PB动态创建菜单的核心算法描述
    • 数据结构教程 第三十八课 文件概念、顺序文件
    • 二进制格雷码与自然二进制码的互换
    • 数据结构教程 第十课 栈的表示与实现
    • 路由基础知识:路由算法
    • RSA算法的实现(java版)
    • 数据结构教程 第三十五课 实验七 查找

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有