Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it L'avatar di adp
    Registrato dal
    Oct 2008
    Messaggi
    87

    funzione di uscita, alberi

    salve ragazzi,
    ho un problema sempre con gli alberi, in pratica durante una visita preorder di un albero , devo inserire gli elementi interni (quindi escludere le foglie)che incontri in una lista, ma non appena incontro il nodo = ad x, il programma deve uscire, come si fa?

    ho abbozzato cosi:
    codice:
    if((T.isExternal(root)))return;
    		if(root.element().equals(x))return;
    		
    		lista.addLast(root);
    		if(T.isInternal(root)){
    		  		for(Position<E> figli:T.children(root))
    					Selezintnodi(T,figli,x,lista);
    		}
    cosi mi mette nella lista i nodi che vengono I di x, esclude x, ma mette anche i successivi, il che nn dovrebbe farlo, xchè la visita dovrebbe stopparsi!
    aiutoooooooooooooooooooooooooo
    Adp

  2. #2

    Re: funzione di uscita, alberi

    Originariamente inviato da adp
    devo inserire gli elementi interni (quindi escludere le foglie)che incontri in una lista
    Per definizione la foglia è quel nodo che non ha figli. Quindi dov'è il problema?

  3. #3
    Utente di HTML.it L'avatar di adp
    Registrato dal
    Oct 2008
    Messaggi
    87
    sono daccordo con te, ma il fatto è che ogni volta che incontra una foglia oppure un elemeto che contiene x il programma deve uscire, nn deve continuare a visitare l'albero, nn so se ho reso l'idea!
    Adp

  4. #4
    Originariamente inviato da adp
    ogni volta che incontra una foglia oppure un elemeto che contiene x il programma deve uscire
    Aggiungi la condizione che riguarda il nodo foglia usando l'OR, qui
    codice:
    if(root.element().equals(x))return;

  5. #5
    Utente di HTML.it L'avatar di adp
    Registrato dal
    Oct 2008
    Messaggi
    87
    codice:
    cosi dici:
    if(root.element().equals(x))||(T.isExternal(root))return;  ???
    ma nn è il prblema delle foglie, xchè in effetti le foglie nn me le mette nella lista, come kiede la traccia dell'esercizio, ma il problema è che una volta che ha incontrato un nodo== x, il programma deve restituire solo cio che ha incontrato fino a quel punto e nn fare altro
    Adp

  6. #6
    Domanda: Position<E> come è definito?

  7. #7
    Utente di HTML.it L'avatar di adp
    Registrato dal
    Oct 2008
    Messaggi
    87
    è di tipo generico e ritorna la posizione dell' elemento passato!
    Adp

  8. #8
    L'operatore children dovrebbe restituire una qualche istanza di LinkedList, allora potresti fare una cosa del genere:
    codice:
    ...
    		if(T.isInternal(root) && T.children(root) != null && !((Position<E>)lista.getLast()).element().equals(x)) {
                        lista.addLast(root);
    		    for (Position<E> child :T.children(root))
                                 Selezintnodi(T, child, x, lista);
    		}
    ...

  9. #9
    Utente di HTML.it L'avatar di adp
    Registrato dal
    Oct 2008
    Messaggi
    87
    ma gli elementi nn sono nella lista, quindi lista.getlast, mi da errore in quanto la lista è vuota......
    Adp

  10. #10
    Originariamente inviato da adp
    ma gli elementi nn sono nella lista
    Aggiungi un controllo.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.