java学习之二叉排序树
来源:互联网 发布:ubuntu ntfs 编辑:程序博客网 时间:2024/06/06 03:06
二叉排序树:
1.求最大值、最小值
方法:最小值是最左的节点,最大值是最右的节点,只需遍历寻找最左的节点和最右的节点即可
2查找:
查找关键字的值为key的元素,先从根节点开始,如果根节点为空,那么二叉树为空,没有查找到,否则,key和根节点值做比较,
如果小于根节点的值,那么就在左子树中查找,如果key等于根节点的值,那么查找成功,通知搜索,同样的,key大于根节点那么就在
右子树中查找
3插入算法
对数据集合元素x1,x2...xn
令x1是二叉树的根节点
若x2<x1 x2为x1的左子树的根节点,若x2>x1,那么x1为x2的右子树的根节点
4删除算法
(删除以后的二叉树仍是一颗二叉排序树)
假设要删除的节点指针是p,p的父亲节点的指针为f,会有四种情况
(1) p是叶子节点,那么直接删除节点p,f指向的p的指针域置空
(2)p只有左子树或者是只有右子树,(左右子树有一个为空) k是p的左子树,只需要将k的根节点和p的的父亲节点连接。设指针q指向p的一
个非空孩子节点
(3)p有两个孩子,
(1)可以用中序遍历序列的直接后继节点代替p,p的中序遍历序列的直接
后继一定是怕的右子树中最小的节点,即右子树的最左节点没有左子树
假设这个节点用指针s表示,将s放在p的位置然后删除节点s
(2)可以用中序遍历徐略的直接前驱节点代替p,p的中序遍历序列的直接
前驱一定是左子树中最大的节点,即左子树中左右节点没有右子树,假设
这个节点用指针s表示,将s放在p的位置,删除节点s
具体代码在GitHub:https://github.com/Strivema/BinSortTree
1.求最大值、最小值
方法:最小值是最左的节点,最大值是最右的节点,只需遍历寻找最左的节点和最右的节点即可
2查找:
查找关键字的值为key的元素,先从根节点开始,如果根节点为空,那么二叉树为空,没有查找到,否则,key和根节点值做比较,
如果小于根节点的值,那么就在左子树中查找,如果key等于根节点的值,那么查找成功,通知搜索,同样的,key大于根节点那么就在
右子树中查找
3插入算法
对数据集合元素x1,x2...xn
令x1是二叉树的根节点
若x2<x1 x2为x1的左子树的根节点,若x2>x1,那么x1为x2的右子树的根节点
4删除算法
(删除以后的二叉树仍是一颗二叉排序树)
假设要删除的节点指针是p,p的父亲节点的指针为f,会有四种情况
(1) p是叶子节点,那么直接删除节点p,f指向的p的指针域置空
(2)p只有左子树或者是只有右子树,(左右子树有一个为空) k是p的左子树,只需要将k的根节点和p的的父亲节点连接。设指针q指向p的一
个非空孩子节点
(3)p有两个孩子,
(1)可以用中序遍历序列的直接后继节点代替p,p的中序遍历序列的直接
后继一定是怕的右子树中最小的节点,即右子树的最左节点没有左子树
假设这个节点用指针s表示,将s放在p的位置然后删除节点s
(2)可以用中序遍历徐略的直接前驱节点代替p,p的中序遍历序列的直接
前驱一定是左子树中最大的节点,即左子树中左右节点没有右子树,假设
这个节点用指针s表示,将s放在p的位置,删除节点s
具体代码在GitHub:https://github.com/Strivema/BinSortTree
0 0
- java学习之二叉排序树
- 数据结构学习之二叉排序树
- 二叉排序树之Java实现
- JAVA数据结构之二叉排序树
- Java二叉排序树
- JAVA-二叉排序树
- 数据结构与算法学习之二叉排序树及二叉排序树的相关操作
- 数据结构之二叉排序树或者二叉查找树(java版)
- Java 7之集合类型 - 二叉排序树、平衡树、红黑树
- Java 7之集合类型 - 二叉排序树、平衡树、红黑树---转
- 初步学习二叉排序树
- 二叉排序树的学习
- 动态查找之二叉排序树
- 数据结构之二叉排序树
- 二叉排序树之删除节点
- 数据结构之(二叉排序树)
- 二叉排序树之递归陷阱
- 查找系列之二叉排序树
- BIT —— 模板
- 关于Android中xListView所出现的问题(点击后程序崩掉)
- linux grep 关键字 高亮
- Can I Use SFP Transceiver in SFP+ slot?
- 欢迎使用CSDN-markdown编辑器
- java学习之二叉排序树
- oracle中同义词
- mysql连接慢的一个原因
- C++模板应用——让模板定义和实现分离的方法
- 通过域名连接服务器
- Unreal Open day 2017 参会小结
- jsonp 跨域访问
- 数学模型之解析解、闭合解、数值解
- JAVA递归算法实例小结