Pages: [1]   Go Down
Print
Author Topic: [Help] Livello di un nodo !  (Read 963 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Cerberus
Matricola
*
Offline Offline

Posts: 41


« 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;
}
}
Logged
Il Capitano
Apprendista Forumista
**
Offline Offline

Posts: 409


« Reply #1 on: 07-09-2012, 09:52:59 »

Quoto. Nessuno? testate
Logged
Cerberus
Matricola
*
Offline Offline

Posts: 41


« Reply #2 on: 07-09-2012, 10:52:15 »

Quoto. Nessuno? testate

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];
}
Logged
Il Capitano
Apprendista Forumista
**
Offline Offline

Posts: 409


« Reply #3 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.
« Last Edit: 07-09-2012, 10:58:46 by Il Capitano » Logged
Cerberus
Matricola
*
Offline Offline

Posts: 41


« Reply #4 on: 07-09-2012, 11:06:27 »

si, anke io sn convinto, ma ieri ci ho sbattuto cosi tanto ke ho mollato alla fine Sad
Logged
Pages: [1]   Go Up
Print
Jump to: