zoukankan      html  css  js  c++  java
  • 二叉查找树的实现(可执行代码)

    import java.util.Scanner;
    
    
    public class BSTree<AnyType extends Comparable<? super AnyType>>{
    	BiNode root;
    	class BiNode<AnyType>{
    		AnyType data;
    		BiNode left;
    		BiNode right;
    		public BiNode(AnyType data){
    			this.data=data;
    		}
            public BiNode(AnyType data,BiNode left,BiNode right){
    			this.data=data;
    			this.left=left;
    			this.right=right;
    		}
    	}
    	
    	//添加
    		public void insert(AnyType x){
    			root=insert(x,root);
    		}
    		public BiNode insert(AnyType x,BiNode t){
    		   if(t==null)
    			   return new BiNode(x,null,null);
    		   int compareResult=x.compareTo((AnyType)t.data); 
    		   if(compareResult>0)
    			   t.right=insert(x,t.right);
    		   if(compareResult<0)
    		       t.left=insert(x,t.left);
    		   else;
    		   return t;
    			   
    		}
    		//找最小
    		public AnyType findMin(){		   	
    			return (AnyType) findMin(root).data;		
    		}
    		public BiNode findMin(BiNode t){
    			if(t==null)
    				return null;
    			else if(t.left==null)
    				return t;
    			else
    				return findMin(t.left);
    		}
    		//删除
    		public void remove(AnyType x){
    			root=remove(x,root); 
    		}
    		public BiNode remove(AnyType x,BiNode t){
    			if(t==null)
    				return t;
    			int compareResult=x.compareTo((AnyType)t.data);
    			if(compareResult<0)
    				t.left=remove(x,t.left);
    			else if(compareResult>0)
    				t.right=remove(x,t.right);
    			    else if(t.left!=null&&t.right!=null){
    				t.data=findMin(t.right).data;
    			    t.right=remove((AnyType)t.data,t.right);
    			    }
    			    else
    					t=(t.left!=null)?t.left:t.right;
    
    			return t;	
    		}
    		
    		//中序遍历
    		public void inOrder(){
    			inOrder(root);
    		}
    		public void inOrder(BiNode t){
    			if(t!=null){
    				inOrder(t.left);
    				System.out.print(t.data+"    ");
    				inOrder(t.right);
    			}
    			
    		}
    	public static void main(String[] args) {
    		Scanner sc=new Scanner(System.in);
    		BSTree<Integer> bsh=new BSTree<Integer>();
    		for(int i=0;i<6;i++){
    			int numble=sc.nextInt();
    			bsh.insert(numble);
    		}
    		bsh.inOrder();
    	}
    
    }
    

  • 相关阅读:
    (转载)C#如何在任务管理器中不显示指定的窗体
    Windows上配置Mask R-CNN及运行示例demo.ipynb
    如何选择普通索引和唯一索引?
    relay(跳板机)搭建
    javascript 9x9乘法口诀表
    canvas画布爆炸
    Chrome Network Timing 解释
    JavaScript中对数组的定义
    jquery each 和 map 区别
    css 兼容性转换网站
  • 原文地址:https://www.cnblogs.com/oversea201405/p/3752222.html
Copyright © 2011-2022 走看看