4 !

By eprogrammer

سلام !
اول بگم که پست قبلی برنامه ی اصلی ایراد داشت که من درستش کردم و نوشتم .
حالا :

برنامه ی 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;
   
  }

يك پاسخ برايش بگذاريد