博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二叉搜索树的插入与删除
阅读量:6947 次
发布时间:2019-06-27

本文共 678 字,大约阅读时间需要 2 分钟。

题目:创建一个类,类中的数据成员时一棵二叉搜索树,对外提供的接口有添加结点和删除结点这两种方法。用户不关注二叉树的情况。要求我们给出这个类的结构以及实现类中的方法。

思路

添加结点:

添加结点其实很容易,我们只需要找到结点所行对应的位置就可以了,而且没有要求是平衡的二叉搜索树,因此每次添加结点都是在叶子结点上操作,不需要修改二叉搜索树整体的结构。要找出添加节点在二叉搜索树中的位置,可以用一个循环解决。判断插入结点与当前头结点的大小,如果大于头结点则继续搜索右子树,如果小于头结点则继续搜索左子树。直到搜索到叶子结点,此时进行插入结点操作。如果插入的结点等于二叉搜索树中当前某一结点的值,那么退出插入操作,并告知用户该结点已经存在。

删除结点:

删除结点比较麻烦,因为需要调整树的结构,这是因为删除结点并不一定发生在叶子结点。如果删除的是叶子结点,那么操作非常简单,只是做相应的删除就可以了,但如果删除的是非叶子结点,那么就需要调整二叉搜索树的结构。调整的策略有两个。假设当前需要删除的结点为A,

  1. 找出A结点左子树中的最大值结点B,将B调整到原先A的位置。
  2. 找出A结点右子树中的最小值结点C,将C调整到原先A的位置。

 这其中涉及到许多复杂的指针操作,在下面的代码示例中并没有完成结点删除操作,等有空再补充研究一下。 

代码示例

View Code

总结

本文转自xwdreamer博客园博客,原文链接:http://www.cnblogs.com/xwdreamer/archive/2012/05/15/2501337.html,如需转载请自行联系原作者

你可能感兴趣的文章
linux删除之前的文件日志
查看>>
RPM包制作
查看>>
xen虚拟机管理命令
查看>>
ORACLE体系结构
查看>>
趣学Python之弹球游戏第五阶段--加个球拍
查看>>
【Android】Uri、UriMatcher、ContentUris详解 .
查看>>
oracle 数据库体系结构图解
查看>>
地址记录本
查看>>
安装Linux系统与常见命令(一)
查看>>
辅助DC降级后无法登陆故障排除
查看>>
点点滴滴累计linux命令
查看>>
公钥密码学中的素数以及对称加密
查看>>
Android上的Open×××-TAP模式/策略路由
查看>>
阿里云服务器安装php+nginx+mysql环境
查看>>
linux shell 字符串处理
查看>>
iis的安装与应用
查看>>
centos 添加YUM源
查看>>
蓝屏dump分析教程,附分析工具WinDbg下载
查看>>
CentOS7.x 通过mail命令发,使用465端口(smtps协议)发送邮件
查看>>
Android开源项目SlidingMenu深入剖析
查看>>