codice:
public int cardine(Nodo u, int x) // crea un nodo u, inizializza l'altezza sx e dx dello stesso, dopo aver fatto la ricorsione
// sulle due altezze, aggiunge il nodo alla lista cardine e ritorna l'altezza
{
NodoBinPF n = (NodoBinPF)u;
if(n == null)
return -1;
int hsx = cardine(((Nodo) (n.sin)), x + 1);
int hdx = cardine(((Nodo) (n.des)), x + 1);
int high;
if(hsx >= hdx)
high = hsx + 1;
else
high = hdx + 1;
if(x == high)
listaCardine.add(n.info);
return high;
}
public class Info
{
public char carattere;
public int intero;
public Info(int i, char c)
{
this.intero=i;
this.carattere=c;
}
public String toString()
{
if(this!= null) return "("+intero+","+carattere+")";
else return "null";
}
}
L'output del mio programma è :
(0,a)
(1,b)
(2,c)
(3,d)
(4,e)
lista riempita
costruisci l'albero
< null (0,a) null >
< null (1,b) null >
< null (1,a) null >
< (0,a) (1,a) (1,b) >
costruisci l'albero
< null (2,c) null >
< null (3,d) null >
< null (5,c) null >
< (2,c) (5,c) (3,d) >
costruisci l'albero
< null (4,e) null >
< (0,a) (1,a) (1,b) >
< null (5,e) null >
< (4,e) (5,e) (1,a) >
costruisci l'albero
< (2,c) (5,c) (3,d) >
< (4,e) (5,e) (1,a) >
< null (10,c) null >
< (5,c) (10,c) (5,e) >
Lista nodi cardine
(5,c)
non riesco a capire se il grafo ricavato da questi nodi è giusto:
(10,c)
(5,c) (5,e)
(2,c) (3,d) (1,a) (4,e)
(0,a) (1,b)
Perchè il nodo (5,c) è un nodo cardine? perchè è l'unico?