解决方案 »

  1.   

    1.中序遍历有序二叉树
    package 算法;
    /**
     *  遍历顺序是根据根节点的遍历顺序有关
     *  先遍历根节点为先序遍历
     *  第二 遍历跟节点的中序遍历
     *  最后遍历根节点则是后序遍历
     * @author Administrator
     *
     */
    public class BinarySortTree {
    public static Node tree;
    public static void main(String[] args) {
    int[] data={6,42,34,12,3,5,75,323};
    tree = new Node();  
    tree.value = data[0]; 
    for (int i = 1; i < data.length; i++) {
    tree.store(data[i]);
    }
    // System.out.println(tree.value);
    tree.preList();  
            System.out.println();  
            tree.middleList();  
            System.out.println();  
            tree.afterList();  
    }
    }class Node{
    public int value;
    public Node left;
    public Node right;

    //插入
    public void store(int value){  
            if(value<this.value){  
                if(this.left == null){  
                    this.left = new Node();  
                    this.left.value = value;  
                }else{  
                    this.left.store(value);  
                }  
            }else if(value>this.value){  
                if(this.right == null){  
                    this.right = new Node();  
                    this.right.value = value;  
                }else{  
                    this.right.store(value);  
                }  
            }  
            
        }  
    //查找
       public Node find(int value){
       if(value == this.value){
       return this;
       }else  if(value < this.value && null !=this.left){
      return  this.left.find(value);
       }else if(value>this.value &&   null !=this.right){
       return this.right.find(value);
       }
    return null;
     }
       //删除
    //    public void delete(int value){
    //    if(value == this.value){
    //    
    //    }else  if(value < this.value){
    //  this.left.find(value);
    //    }else if(value>this.value){
    //  this.right.find(value);
    //    }
    //  }
       //前序遍历
       public void preList(){  
            System.out.println(this.value+",");  
            if(left!=null){  
                this.left.preList();  
            }  
            if(this.right != null){  
                this.right.preList();  
            }  
        }  
          //中序遍历
        public void middleList(){  
            if(this.left != null){  
                left.middleList();  
            }  
            System.out.println(this.value + ",");  
            if(this.right != null){  
                right.middleList();  
            }  
        }  
          //后序遍历
        public void afterList(){  
            if(this.left != null){  
                this.left.afterList();  
            }  
            if(this.right != null){  
                right.afterList();  
            }  
            System.out.println(value + ",");  
        }  
          
    }2.不会
    3.太简单这就不做了
    4.min这个复杂度为0(1)不知道怎么做啊
      

  2.   

    第二个应该是用top k算法之类的海量数据处理吧