private PuuSolmu tasapainotaPuu(PuuSolmu solmu)
         {
             if( solmu == null )
                 return solmu;
             //Jos puu on kallellaan vasemmalle
             if( laskeKorkeus(solmu.vasen) - laskeKorkeus(solmu.oikea) > 1)
                 if( laskeKorkeus(solmu.vasen.vasen) >= laskeKorkeus(solmu.vasen.oikea))
                     solmu = kaannaOikealle(solmu);
                 else
                     solmu = vasenOikeaKaannos(solmu);
             else
             //Jos puu on kallellaan oikealle    
             if( laskeKorkeus(solmu.oikea) - laskeKorkeus(solmu.vasen) > 1)
                 if(laskeKorkeus(solmu.oikea.oikea) >= laskeKorkeus(solmu.oikea.vasen))
                     solmu = kaannaVasemmalle(solmu);
                 else
                     solmu = oikeaVasenKaannos(solmu);
             //Päivitetään solmun korkeutta
             solmu.korkeus = Math.max(laskeKorkeus(solmu.vasen), laskeKorkeus(solmu.oikea))+1;
             return solmu;
         }