Pages: [1]   Go Down
Print
Author Topic: come si implementa "isRoot"?  (Read 994 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Alex_47
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 409


The spiral's King


« on: 09-05-2009, 16:30:57 »

Qualcuno sa suggerirmi qualcosa su come implementabi i metodoi isRoot e isLeaf? Inoltre vede essere implementato nella classe nodo oppure albero?
« Last Edit: 09-05-2009, 16:40:45 by Alex_47 » Logged
Alex_47
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 409


The spiral's King


« Reply #1 on: 09-05-2009, 16:58:15 »

Come non detto , sono riuscito a farli da solo e vi posto anche le soluzioni...

Code:
public boolean isLeaf(int val)
{
Nodo p = root;
while(p != null)
{
if(val == p.key)
{
return isLeaf(p);
}
else
{
if (val < p.key) p = p.left;
else
    {
    p = p.right;
    }
}
}
return false;

}

public boolean isLeaf(Nodo p)
{
return ((p.right==null)&&(p.left==null));
}





public boolean isRoot(int val)
{
Nodo p = root;
while(p != null)
{
if(val == p.key)
{
return isRoot(p);
}
else
{
if (val < p.key) p = p.left;
else
    {
    p = p.right;
    }
}
}
return false;
}

public boolean isRoot(Nodo p)
{
return (p==root);

}




mentre qua vi public parent()

Code:
public Nodo parent(int val)
{
Nodo p = root;
Nodo q = root;
while(p != null)
{
if(val == p.key)
{
if(p==root)
{
return null;
}
else
{
return q;
}
}
else
{
if (val < p.key)
{
q = p;
p = p.left;
}
else
    {
    q = p;
    p = p.right;
    }
}
}
return null;
}
« Last Edit: 09-05-2009, 17:15:51 by Alex_47 » Logged
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
*****
Offline Offline

Gender: Male
Posts: 4.474


Più grande è la lotta, e più è glorioso il trionfo


WWW
« Reply #2 on: 09-05-2009, 17:02:40 »

Visto che prima che tu postassi da te la risposta avevo scritto un po' e non mi va di buttare un messaggio esplicativo interessante, riporto comunque la mia risposta:

Come suggerisce già Giovi89 in quest'altro post (ma tu non potevi averlo letto perché è stato postato solo 1 minuto dopo, d'oh!  boh), i metodo isLeaf e isRoot si applicano sicuramente ai nodi, ma rispetto ad un albero.

Cioè il soggetto delle domande "è una foglia" e "è la radice" è sicuramente "il nodo".
Tuttavia il nodo in sé non trasporta alcuna informazione di questo tipo riguardo sè stesso.

Bisogna chiedere ad un albero, se, per tale dato albero, il soggetto "nodo" è una foglia oppure una radice.

Tendenzialmente, inserirei tali metodi nella classe Albero, ma potrebbero, seguendo un'altra logica equivalente ma da un altro punto di vista, essere inseriti nella classe Nodo.

È chiaro che in entrambi i casi, bisogna passare al metodo un riferimento all'oggetto di tipo diverso:
  • se inserisco i metodi nella classe Albero, dovrò passare un nodo nel metodo;
  • se inserisco i metodi nella classe Nodo, dovrò passare un Albero nel metodo;

Inoltre possiamo fare alcune considerazioni collaterali:
  • un nodo è sempre sicuramente radice di un albero: basta considerare un albero in cui la radice sia questo nodo (anche se tale albero potrebbe non esistere come istanza indipendente);
  • un nodo è foglia se non ha figli (quindi non serve propriamente il riferimento ad Albero): tuttavia non è detto che un nodo (foglia o meno) faccia parte di un albero istanziato indipendentemente;

 

Logged

La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.

In tutto, amare e servire.

  
                            ن                           
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...

...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...

   YouTube 9GAG    anobii  S  Steam T.B.o.I. Wiki [univ] Lezioni private  ʼ  Albo d'Ateneo Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il Regolamento
Pages: [1]   Go Up
Print
Jump to: