二叉查找树的基本操作
来源:互联网 发布:股票作手回忆录知乎 编辑:程序博客网 时间:2024/05/17 02:40
本总结是是个人为防止遗忘而作,不得转载和商用。
二叉查找树
二叉查找树(二叉搜索树)是满足以下条件的二叉树:
左子树上的所有结点值均小于根结点值,
右子树上的所有结点值均不小于根结点值,
左右子树也满足上述两个条件
查找
给定一颗二叉查找树,查找某结点p的过程如下:
将当前结点cur赋值为根结点root;
若p的值小于当前结点cur的值,查找cur的左子树;
若p的值不小于当前结点cur的值,查找cur的右子树;
递归上述过程,直到cur的值等于p的值或者cur为空;
当然,若结点是结构体,注意定义“小于”“不小于”“等于”的具体函数。
插入
插入过程如下:
若当前的二叉查找树为空,则插入的元素为根结点;
若插入的元素值小于根结点值,则将元素插入到左子树中;
若插入的元素值不小于根结点值,则将元素插入到右子树中;
递归上述过程,直到找到插入点为叶子结点。
删除
记待删除的结点为p,分三种情况进行处理:
p为叶子结点
p为单支结点
p的左子树和右子树均不空
p为叶子结点
p为叶子结点,直接删除该结点,再修改p的父结点的指针。
p为单支结点
若p为单支结点(即只有左子树或右子树),则将p的子树与p的父亲结点相连,删除p即可。
p的左子树和右子树均不空
这里要先解释两个概念:
P的直接后继:P的右孩子的最左子孙,如:上面图中5的直接后继就是6。
P的直接前驱:P的左海子的最右子孙,如:上面图中5的直接前驱就是3。
删除过程:
1,将p的直接后继的值拷贝到p处
2,删除p的直接后继
PS:将上面两步的“直接后继”替换为“直接前驱”也行。
修改二叉树的某个节点
如把上面图中的节点10改成14,最简单的做法是把节点10删掉,然后插入14。
- 二叉树查找树的基本操作
- java二叉查找树的基本操作
- 二叉查找树的基本操作
- 二叉查找树的基本操作
- 二叉查找树基本操作
- 二叉查找树的基本操作之查找插入删除
- 二叉查找树(binary search tree)上的基本操作
- 查找二叉树的基本操作以及层次遍历
- 二叉查找树的定义以及几个基本操作
- 二叉排序树(二叉查找树)的基本操作
- 实现基本二叉查找树操作的例程
- 二叉搜索树的查找与删除一些基本操作
- 二叉树的基本操作(插入、查找)
- 二叉查找树基本操作实现
- 二叉查找树的操作
- 二叉查找树的操作
- 查找二叉树的操作
- 二叉查找树的操作
- Android 高仿墨迹天气“我”页面
- KoaHub.JS基于Node.js开发的Lodash模块化实用程序代码
- cocos2dx 碰撞检测 总结
- Javascript面向对象编程(二):构造函数的继承
- linux(centos 64位)nodejs 安装 forever 进程守护
- 二叉查找树的基本操作
- 时间戳和标准时间转换
- Redhat 7配置yum源
- sublime 操作快捷键
- [Unity3D——用代码说明一切] UGUI:用代码添加事件监听
- html背景图片自适应浏览器
- 去掉UITableView底部多余的线
- JAVA开发12--将oracle查询结果赋值给JAVA变量
- Longest Palindromic Substring