二分查找树

定义

1 所谓的一棵二分查找树(Binary search tree) T,要么是一棵空树,要么是以 r = (key, value) 为根节点的二叉树,而且其左、右子树都是二分查找树,同时  n 在 r 的左子树中,所有节点(如果存在的话)的关键码均不大于 key;  o 在 r 的右子树中,所有节点(如果存在的话)的关键码均不小于 key。 

二叉树 T 为二分查找树,当且仅当其中序遍历序列是单调非降的。 

查找算法

二分查找树查找算法的构思是:从根节点始,以递归的形式不断缩小查找范围,直到发现目 标条目(查找成功)或查找范围缩小至空树(查找失败)。 

在递归的每一层,一旦发现当前节点为 null,则说明查找范围已经为空,查找失败;否则,我 们将目标关键码与当前节点的关键码做对比。与有序查找表的二分查找过程类似,这里的比较结果 也不外乎三种可能:

1. 目标关键码更大(比如在节点 36 处)。此时,可以深入右子树中做递归查找;

2. 目标关键码更小(比如在节点 93 和 58 处)。此时,可以深入左子树中做递归查找;

3. 相等(比如在节点 46 处)。此时算法以“查找成功”结束。 

,一般的二分查找树对其高度没有任何限制,在坏情况下,由n个节点构成的二分查找 树的高度可以达到Θ(n)。如 图七.5 所示,当所有节点都没有左孩子时,就是这样的一种极端情况。 此时,查找操作在坏情况下可能需要线性的时间⎯⎯这并不奇怪,因为实际上,这样的一棵“二 分”查找树已经退化为了一个不折不扣的有序查找表。

查找算法

插入算法

删除算法

猜你喜欢

转载自www.cnblogs.com/CherryTab/p/12056755.html
今日推荐