سلام !
اول بگم که پست قبلی برنامه ی اصلی ایراد داشت که من درستش کردم و نوشتم .
حالا :
برنامه ی BST : با شیوه ی جالبی پیاده سازی شده و با تکنیک Generic نوشته شده که از کلاس Comparable ارث برده .
متد های insert , remove را اینجا می نویسم . متهد های عمومی insert , remove برعهده ی خواننده ی متن .
import java.io.*;
import java.util.NoSuchElementException;
class BinaryNode<T extends Comparable> {
T data;
protected int Visited;
BinaryNode<T> right,left;
BinaryNode ( ) {
this.data =null;
right=left=null;
Visited=0;
}
}
class BinaryTree<T extends Comparable> {
private BinaryNode root;
public BinaryTree(){
root=null;
}
private static<T extends Comparable>
BinaryNode<T> insert ( BinaryNode tree, T data ) throws DuplicatItem {
if ( tree == null ) {
tree = new BinaryNode<T> ( data,null,null );
}
else {
int dir = data.compareTo ( tree.data ) > 0 ? 1 : 0;
if(dir<0)
tree.left=insert(tree.left,data);
else if(dir>0)
tree.right=insert(tree.right,data);
else
throw new DuplicatItem(“Search Tree : insert”);
}
return tree;
}
private<T extends Comparable>
BinaryNode<T> remove( BinaryNode tree, T data ) {
if ( tree == null )
throw new NoSuchElementException(“” +
“remove: No element to remove”);
if(data.compareTo(tree.data)<0)
tree.left=remove(tree.left,data);
else if(data.compareTo(tree.data)>0)
tree.right=remove(tree.right,data);
else if(data.compareTo(tree.data)==0){
if(tree.left==null)
tree=tree.right;
else if(tree.right==null)
tree=tree.left;
}
else{
Comparable replacewithvalue=rightMax(tree.left);
tree.data = (T) replacewithvalue;
tree.left= deletetrightMax(tree.left);
}
return tree;
}