数据结构 课件 二叉搜索树

数据结构 课件 二叉搜索树

ID:44933940

大小:197.50 KB

页数:18页

时间:2019-11-05

数据结构 课件 二叉搜索树_第1页
数据结构 课件 二叉搜索树_第2页
数据结构 课件 二叉搜索树_第3页
数据结构 课件 二叉搜索树_第4页
数据结构 课件 二叉搜索树_第5页
资源描述:

《数据结构 课件 二叉搜索树》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、二叉搜索树(BinarySearchTree)定义二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树:每个结点都有一个作为搜索依据的关键码(key),所有结点的关键码互不相同。左子树(如果非空)上所有结点的关键码都小于根结点的关键码。右子树(如果非空)上所有结点的关键码都大于根结点的关键码。左子树和右子树也是二叉搜索树。1351545504025102030二叉搜索树例结点左子树上所有关键码小于结点关键码;右子树上所有关键码大于结点关键码;注意:若从根结点到某个叶结点有一条路径,路径左边的结点的关键码不一定小于路径上的结点的关键码。2如果对一棵二叉搜索树进行中序遍历,可以按从小

2、到大的顺序,将各结点关键码排列起来,所以也称二叉搜索树为二叉排序树。3二叉搜索树的搜索算法在二叉搜索树上进行搜索,是一个从根结点开始,沿某一个分支逐层向下进行比较判等的过程。它可以是一个递归的过程。假设想要在二叉搜索树中搜索关键码为x的元素,搜索过程从根结点开始。如果根指针为NULL,则搜索不成功;否则用给定值x与根结点的关键码进行比较:若给定值等于根结点关键码,则搜索成功,返回搜索成功信息并报告搜索到结点地址。4若给定值小于根结点的关键码,则继续递归搜索根结点的左子树;否则。递归搜索根结点的右子树。搜索45搜索成功搜索28搜索失败3515455040251020305搜索过程是

3、从根结点开始,沿某条路径自上而下逐层比较判等的过程。搜索成功,搜索指针将停留在树上某个结点;搜索不成功,搜索指针将走到树上某个结点的空子树。设树的高度为h,最多比较次数不超过h。6二叉搜索树的插入算法为了向二叉搜索树中插入一个新元素,必须先检查这个元素是否在树中已经存在。在插入之前,先使用搜索算法在树中检查要插入元素有还是没有。如果搜索成功,说明树中已经有这个元素,不再插入;如果搜索不成功,说明树中原来没有关键码等于给定值的结点,把新元素加到搜索操作停止的地方。735154550402510203028插入新结点28二叉搜索树的插入每次结点的插入,都要从根结点出发搜索插入位置,然

4、后把新结点作为叶结点插入。8例:在下述二叉排序树中插入值为11、53的结点。45412238765807220插入值为11的结点1111插入值为53的结点53539例:设关键字的输入序列为45,24,53,12,28,90,按上述算法生成一棵二叉排序树。初始时,空二叉树45插入关键字为45的结点2490531228插入关键字为24的结点插入关键字为12的结点插入关键字为28的结点插入关键字为90的结点插入关键字为53的结点但若关键字的输入序列为24,12,53,28,90,45,所生成的二叉排序树又是另外一种形式。12242853459010可见:关键字的输入顺序不同,可建立的不

5、同二叉排序树。11输入数据{53,78,65,17,87,09,81,15}53537853786553786517537865871753786509178753786581178709537865151787098112二叉搜索树的删除算法在二叉搜索树中删除一个结点时,必须将因删除结点而断开的二叉链表重新链接起来,同时确保二叉搜索树的性质不会失去。为保证在删除后树的搜索性能不至于降低,还需要防止重新链接后树的高度增加。删除叶结点,只需将其双亲结点指向它的指针清零,再释放它即可。被删结点右子树为空,可以拿它的左子女结点顶替它的位置,再释放它。13被删结点左子树为空,可以拿它的右

6、子女结点顶替它的位置,再释放它。被删结点左、右子树都不为空,可以在它的右子树中寻找中序下的第一个结点(关键码最小),用它的值填补到被删结点中,再来处理这个结点的删除问题。5378651787092345删除45右子树空,用左子女顶替53786517870923148853788817940923删除78左子树空,用右子女顶替53948817092353788117940945删除78在右子树上找中序下第一个结点填补236553818817940945236515二叉搜索树性能分析对于有n个关键码的集合,其关键码有n!种不同排列,可构成不同二叉搜索树有(棵){2,1,3}{1,2,

7、3}{1,3,2}{2,3,1}{3,1,2}{3,2,1}12311113222332316同样3个数据{1,2,3},输入顺序不同,建立起来的二叉搜索树的形态也不同。这直接影响到二叉搜索树的搜索性能。如果输入序列选得不好,会建立起一棵单支树,使得二叉搜索树的高度达到最大。17代码实现见二叉搜索树代码.swf18

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。