二叉查找树
来源:互联网 发布:mac 如何切换中英文 编辑:程序博客网 时间:2024/06/05 15:07
二叉查找树介绍:
二叉查找树按二叉树结构组织的,具有以下性质:
对于任意节点x,其key[x] >= key[left(x)],且key[x] <= key[right(y)]
二叉查找树由以下基本操作:
1、 遍历(INORDER-TREE-WALK(x))
遍历可以通过递归实现:(中序遍历)
INORDER-TREE-WALK(x)
If x!=NIL
then INORDER-TREE-WALK(left(x))
Print key[]x]
INORDER-TREE-WALK(left(x))
注:以上为中序遍历,也就是对于父节点、左儿子、右儿子,按照从小到大顺序排列,即左儿子、父亲、右儿子。
2、 查询
TREE-SEARCH(x, k)
If x==NIL or k==key[x]
then return x
if k < key[x]
then return TREE_SEARCH(x, k)
else returnTREE_SEARCH(x, k)
3、 TREE-MINMUN
查找最小的元素,直接沿着节点的左儿子遍历到左儿子为空即可。
4、 TREE-MAXMUN
查找最大的元素,直接沿着节点的右儿子遍历到右儿子为空即可。
5、 TREE-SUCCESSOR(x)
查找后继元素,即查找到树中比key[x]的元素中最小的一个。
REE-SUCCESSOR(x)
If right(x) !=NIL
Then return TREE-MINMUN(right(x))
y = parent(x)
while y !=NIL and x=right(y)
do x = y
y = parent(y)
return y
注:要查找比当前元素大的最小的元素,如果有右儿子,直接取右子树的最小的元素(因为比当前元素大只能在右子树或者在某个祖先上,但是祖先要么小于当前元素(排除),要么大于当前元素的右字树所有元素一定小于该祖先,因此,如果存在右儿子那么后继元素一定在右子树)
6、 插入
TREE-INSERT(T, z)
Y = NIL
X = root(T)
While x != NIL
Do y = x
If key[y] < key[z]
X = right(x)
Else x = left(x)
p[z]= y
ify == NIL
then root(T) = z
else if key[y] > key[z]
then left[y] = z
else right[y] = z
7、 删除
TREE-DELTE(T, z)
If left(z) == NILor right(z) == NIL
then Y = z
else y = TREE-SUCCESSOR(z)
if left(y) != NIL
then x = left(y)
else x = right(y)
if x != NIL
then parent(x) = parent(y)
if parent(y) == NIL
then root(T) = x
else if y == left(parent(y))
then left(parent(y)) = x
else right(parent(y)) =x
if y != z
then key[y] = key[z]
return y
注:删除过程第一步是要找到只有一个儿子或者没有儿子的节点。如果待删除的节点不多于两个儿子那么该节点就是本身要找的节点,否则需要的找到该节点的后继节点。第二步是将找的节点与待删除节点进行替换,替换的第一步在于把找到的节点的儿子找到新的父亲。
- 查找--二叉查找树
- 二叉树、二叉查找树
- 二叉树 & 二叉查找树
- 【查找结构】二叉查找树
- 查找之二叉树查找
- 查找之二叉树查找
- 查找:二叉查找树总结
- 二叉树查找树...
- 二叉树查找树
- 查找--遍历二叉树
- 二叉查找树
- 二叉查找树实现
- 二叉查找树
- 动态二叉查找树
- 最优二叉查找树
- 二叉查找树
- 二叉查找树
- 平衡二叉查找树
- spark SQL源码阅读001——sql.core包核心类——001执行SQL语法解析
- Android界面切换
- Java应用程序高CPU故障诊断(troubleshooting)思路
- 详解js闭包
- Tomcat启动报错Cannot connect to VM
- 二叉查找树
- 算法学习---红黑树
- 【操作系统】进程调度及其算法
- Thread.currentThread().getContextClassLoader()
- hihocoder#1055之刷油漆
- 【.net基础】--.NET、winform、Asp.Net区别
- H5,Audio音乐播放器(移动版)
- 企业实训收获之--web前端设计
- HDU5233 Gunner II 离散化的各种方法