《算法》(第四版)------------查找
二分查找
思路
在一个有序列中搜索x,先匹配中间元素mid(二分),若x<mid,则对mid左边的有序列以同样的步骤进行搜索x;若x>mid,则对mid右边的有序列以同样步骤进行搜索x。递归直到最终元素命中或者无法命中。
二叉查找树(BST)
public class BST<Key extends Comparable<Key>, Value>
{
private Node root; // 根结点
private class Node
{
private Key key;
private Value val;
private Node left,right;//子树链接
private int N;//以该结点为根的树中的结点总数
}
public int size();//N
}
查找
因为key为按序,则二分查找即可实现,遇到空链接则说明未命中。
插入
先二分查找,查找到则可以更新Value,查找不到则new一个结点。对于整条递归的查询路径,都会重新进行一次链接赋值,则新new的结点也会被链接。
private Node put(Node x, Key key, Value value)
{
//不存在则会创建Node
if(x==null) return Node(key,value,1);
int cmp = key.compareTo(x.key);
//重新赋值链接
if(cmp<0) x.left = put(x.left,key,value);
else