private PuuSolmu remove( PuuSolmu solmu, PuuSolmu juuri )
        {            
            if( juuri == null )
                return juuri;

            int vertailu = vertaaSolmuja(solmu, juuri);

            //Jos poistettava on pienempi kuin juuri, poistetaan vasemmalla
            if(vertailu < 0){                                
                juuri.vasen = remove(solmu, juuri.vasen);                
            }
            //Jos poistettava on suurempi kuin juuri, poistetaan oikealta                                                
            else if(vertailu > 0) {
                juuri.oikea = remove(solmu, juuri.oikea);                                                        
            }
            // Jos vertailun tulos 0, on löydetty poistettava solmu            
            //Jos solmulla on kaksi lasta            
            else if( juuri.vasen != null && juuri.oikea != null )
            {                
                //Asetetaan löydettyyn solmuun arvoksi oikean puolen pienin
                //arvo, ts. korvataan se pienimmällä
                juuri.noodi = etsiPienin(juuri.oikea).noodi;
                //Sitten poistetaan noodi jolla on korvattu, eli duplikaatti
                juuri.oikea = remove(solmu, juuri.oikea);                
            } else {
              //Jos solmulla on vain yksi lapsi, asetetaan se solmun tilalle  
              juuri = (juuri.vasen != null) ? juuri.vasen : juuri.oikea;
            } 
            //Lopuksi tasapainotetaan koko puu            
            return tasapainotaPuu(juuri);
        }