public void cancSottoAlbero(Nodo v) throws EccezioneNodoInvalido { if (checkNode(v)) throw new EccezioneNodoInvalido(); if (v == radice) { radice = null; return; } NodoPFFS u = ((NodoPFFS) v).padre; if (u.primo == v) { u.primo = u.primo.succ; } else { NodoPFFS temp = u.primo; boolean nodoTrovato = false; for (; temp.succ != null; temp = temp.succ) { if (temp.succ == v) { nodoTrovato = true; break; } } if (nodoTrovato) temp.succ = temp.succ.succ; } ((NodoPFFS) v).succ = null; }
public void insprimoSottoAlbero(Nodo u, Albero a) { if (checkNode(u)) throw new EccezioneNodoInvalido(); if (a.alberoVuoto()) throw new AlberoVuotoException("Albero che si sta innestando è vuoto"); NodoPFFS z = (NodoPFFS) u; ((NodoPFFS) a.radice()).succ = z.primo; z.primo = (NodoPFFS) a.radice(); ((NodoPFFS) a.radice()).padre = z; ((AlberoPFFS) a).radice = null; // modifico l'appartenenza dei nodi di a updateIdAlbero(z.primo); }
public void insRadice(Object info) throws EccezioneNodoEsistente { if (radice != null) throw new EccezioneNodoEsistente(); radice = new NodoPFFS(info); radice.albero = this; }
private void aggiornaRiferimenti(NodoPFFS v) { v.albero = this; for (NodoPFFS i = v.primo; i != null; i = i.succ) aggiornaRiferimenti(i); }