Array

La struttura dati può essere implementata con un array P contenente tutti i nodi.

In entrambe le rappresentazioni, avendo nodi, la complessità spaziale è data da .

Un albero di esempio può essere:

Padri

In questa rappresentazione l'array è composto da coppie (info, parent).

Nell'esempio, l'array P sarà rappresentato come P = [(A, -1), (B, 0), (C, 0), (D, 1), (E, 1)].

Implementazione

  • Padre

    padre(Tree P, Node v) -> Node | NIL
      if P[v].parent == -1
        return NIL
      else
        return P[v].parent
    

    per cui .

  • Figli

    figli(Tree P, Node v) -> [Node]
      l = []
      for i = 0 to P.length-1
        if P[i].parent == v
          push(l, i)  // Assunto 𝛩(1)
      return l
    

    per cui .

Posizionale

In questo caso la rappresentazione è applicabile per alberi -ari completi con salvato in P.k. Solamente info è salvato nell'array, perchè la relazione tra i nodi è conservata come indice nell'array.

Nell'esempio, l'array P sarà rappresentato come P = [A, B, C, D, E], ovvero:

La radice è in posizione , mentre i figli del nodo sono in posizione per . Definiamo padre di quando si ricava che: dato che .

Implementazione

  • Padre

    padre(Tree P, Node v) -> Node | NIL
      if v == 0
        return NIL
      else
        return floor((v - 1)/P.k)
    

    per cui .

  • Figli

    figli(Tree P, Node v) -> [Node]
      l = []
      if P.k*v + 1 >= P.length
        return l
      else
        for i = 0 to P.k-1
          push(l, P.k*v + 1 + i)  // Assunto 𝛩(1)
        return l
    

    per cui perchè nel caso migliore è .