public NodeAvlEdat inserta(NodeAvlEdat n) {
        NodeAvlEdat r = this;//posar-hi copia()?
        if (r.nodeDni.getPacient().getEdat() >= n.nodeDni.getPacient().getEdat()) {
            if (r.fillEsquerra == null) {
                r.fillEsquerra = n;
            } else {
                r.fillEsquerra = r.fillEsquerra.inserta(n);
                if (alturaE(r.fillEsquerra) - alturaE(r.fillDret) == 2) {
                    if (r.fillEsquerra.nodeDni.getPacient().getEdat() >= n.nodeDni.getPacient().getEdat()) {
                        r = rotacioDreta(r);
                    } else {
                        r = dobleRotacioDreta(r);
                    }
                }
            }
        } else {
            if (r.fillDret == null) {
                r.fillDret = n;
            } else {
                r.fillDret = r.fillDret.inserta(n);
                if (alturaE(r.fillDret) - alturaE(r.fillEsquerra) == 2) {
                    if (r.nodeDni.getPacient().getEdat() < n.nodeDni.getPacient().getEdat()) {
                        r = rotacioEsquerra(r);
                    } else {
                        r = dobleRotacioEsquerra(r);
                    }
                }
            }

        }
        r.altura = Math.max(alturaE(r.fillDret), alturaE(r.fillEsquerra)) + 1;
        return r;
    }