Forum Informatica Unict

LAUREA TRIENNALE (D.M. 270/04) => Programmazione 2, 9 CFU => Topic started by: Cerberus on 07-09-2012, 00:54:07



Title: [Help] Livello di un nodo !
Post by: Cerberus on 07-09-2012, 00:54:07
Ragazzi continuo a scervellarmi ma non sono riuscito completamente a capire xke non mi stampa il livello esatto del nodo !! qualcuno ha un idea ?:|

Code:

public static void cinquanta() {
BST b = new BST();
b.insert(34);
b.insert(54);
b.insert(32);
b.insert(66);
b.insert(78);
b.insert(91);
b.insert(33);

Coda c = new Coda();
BSTNodo p = b.root;
if (p!=null) {
c.EnQueue(p);
int level=0,cont=0;
while (!c.isEmpty()) {
p = c.DeQueue();
p.visit(level);

if (p.left != null) {
c.EnQueue(p.left);
cont++;
}
if (p.right != null) {
c.EnQueue(p.right);
cont++;
}
if (cont > 0) {
++level;
}
cont=0;
}
}


Title: Re:[Help] Livello di un nodo !
Post by: Il Capitano on 07-09-2012, 09:52:59
Quoto. Nessuno? :-)|


Title: Re:[Help] Livello di un nodo !
Post by: Cerberus on 07-09-2012, 10:52:15
Quoto. Nessuno? :-)|

ciao, alla fine ho risolto da me cosi:

ho tenuto traccia del livello tramite la coda

Code:
public static void cinquanta() throws IOException {
BST b = new BST();
Random r = new Random(127329);
for (int i=0;i<50;i++) b.insert(r.nextInt(1000));
Coda c = new Coda();
BSTNodo p = b.root;
if (p!=null) {
c.EnQueue(p);
int level=0,cont=0;
int[] arr = new int[50];
while (!c.isEmpty()) {
p = c.DeQueue();

p.visit(level);
arr[cont++] = p.key;
if (p.left != null) {
c.EnQueue(p.left,level+1);
}
if (p.right != null) {
c.EnQueue(p.right,level+1);
}
level = c.level();


}

Code:
public boolean EnQueue(BSTNodo val,int l) {
if (this.isFull()) return false;
elem[tail] = val;
level[tail] = l;
tail = ++tail % MAX;
return true;
}

Code:
public int level() {
if (this.isEmpty()) return -1;
return level[head];
}


Title: Re:[Help] Livello di un nodo !
Post by: Il Capitano on 07-09-2012, 10:56:22
Ok grazie 1000!
EDIT: eppure sono convinto che questa cosa si possa fare anche localmente nel metodo....comunque sia è già qualcosa.


Title: Re:[Help] Livello di un nodo !
Post by: Cerberus on 07-09-2012, 11:06:27
si, anke io sn convinto, ma ieri ci ho sbattuto cosi tanto ke ho mollato alla fine :(