publicclassBinaySortNode{publicintkey;publicVvalue;publicBinaySortNodelChild;publicBinaySortNoderChild;publicBinaySortNode(){key=0;value=null;lChild=null;rChild=...
public class BinaySortNode
{
public int key;
public V value;
public BinaySortNode lChild;
public BinaySortNode rChild;
public BinaySortNode()
{
key = 0;value=null;
lChild = null;rChild = null;
}
public BinaySortNode(int k, V v)
{
key = k; value = v;
lChild = null;rChild = null;
}
}
class BinarySortTree
{
public BinaySortNode root;
public BinarySortTree(int k, V v)
{
root = new BinaySortNode(k,v);
}
public BinaySortNode search(BinaySortNode node, int key)
/*在root所指二叉排序树中查找某关键字等于key的数据元素,若查找成功,则返回该数据结点,否则返回null*/
{
if (node == null || key==node.key) return node; /* 查找结束*/
else if (key < node.key)
return search(node.lChild,key);
else return search(node.rChild, key);
}
public boolean insert(int key, V v)
{
BinaySortNode p,pre;
boolean isSearched = false;
p = root;
pre = root;
while(p!= null && key != p.key)
{
pre = p;
if(key < p.key) p = p.lChild; /*在左子树中查找*/
else p = p.rChild; /*在右子树中查找*/
}
if(p!= null && key == p.key)
{
isSearched =false;
return false; //要插入的数据已经存在,不需要插入
}
else
{
p = new BinaySortNode(key,v);
if(key
else pre.rChild = p;
return true;
}
}
public void display(BinaySortNode node)
{
if(node==null) return;
else
{
display(node.lChild);
System.out.print(node.value);
display(node.rChild);
}
}
}
展开