Exemplo n.º 1
0
  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;
  }
Exemplo n.º 2
0
  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);
  }
Exemplo n.º 3
0
  public void insRadice(Object info) throws EccezioneNodoEsistente {
    if (radice != null) throw new EccezioneNodoEsistente();

    radice = new NodoPFFS(info);
    radice.albero = this;
  }
Exemplo n.º 4
0
  private void aggiornaRiferimenti(NodoPFFS v) {
    v.albero = this;

    for (NodoPFFS i = v.primo; i != null; i = i.succ) aggiornaRiferimenti(i);
  }