public Solmu lisaa(Punamustapuu puu, int avain) {
        Solmu uusi = puu.binaariLisays(puu, avain);
        uusi.setVari("puna");
        Solmu apu;

        while (uusi.getParent() != null && uusi.getParent().getVari().equals("puna")) {
            if (uusi.getParent() == uusi.getParent().getParent().getVasen()) {
                apu = uusi.getParent().getParent().getOikea();
                if (apu != null && apu.getVari().equals("puna")) {
                    uusi.getParent().setVari("musta");
                    apu.setVari("musta");
                    uusi.getParent().getParent().setVari("puna");
                    uusi = uusi.getParent().getParent();
                } else {
                    if (uusi == uusi.getParent().getOikea()) {
                        uusi = uusi.getParent();
                        pyoritaVasemmalle(uusi);

                    }
                    uusi.getParent().setVari("musta");
                    uusi.getParent().getParent().setVari("puna");
                    pyoritaOikealle(uusi.getParent().getParent());
                }
            } else {
                apu = uusi.getParent().getParent().getVasen();
                if (apu != null && apu.getVari().equals("puna")) {
                    uusi.getParent().setVari("musta");
                    apu.setVari("musta");
                    uusi.getParent().getParent().setVari("puna");
                    uusi = uusi.getParent().getParent();
                } else {
                    if (uusi == uusi.getParent().getVasen()) {
                        uusi = uusi.getParent();
                        pyoritaOikealle(uusi);
                    }
                    uusi.getParent().setVari("musta");
                    uusi.getParent().getParent().setVari("puna");
                    pyoritaVasemmalle(uusi.getParent().getParent());
                }
            }
        }
        puu.getJuuri().setVari("musta");
        return uusi;
    }