Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [Java] AlberiBinari - confronto sottoalbero destro e sinistro

    Salve a tutti, sono nuova del forum e spero di poter trovare gente che mi possa aiutare
    Ho iniziato da poco gli alberi binari e ho un problema con un metodo.

    Dato un albero binario T e una Position V il metodo deve restituire il numero di nodi del sottoalbero di T radicato in v, se e solo se esso soddisfi la seguente proprietà : per ogni nodo w del sottoalbero radicato in v, il numero di nodi del sottoalbero destro deve essere maggiore o uguale al numero dei nodi del sottoalbero sinistro. (metodo ricorsivo) Se non soddisfa la proprietà il metodo deve restituire -1.

    Adesso io ho buttato giù qualche riga di codice ma sembra che non vada. Qualcuno può aiutarmi per favore?


    public int isRightLarger(BinaryTree<E> T, Position<E> v){
    int numSinistro = 0; int numDestro = 0;

    if(T.hasLeft(v))
    numSinistro = isRightLarger(T, left());
    if(T.hasRigt(v))
    numDestro = isRightLarger(T, right());


    if(numDestri >= numSinistri)
    return numDestri + numSinistri + 1;
    return -1;
    }

    Grazie in anticipo

  2. #2
    Salve e buona domenica a tutti XD
    Ho fatto qualche piccola modifica al codice ma continua a non andare...nessuno che mi aiuta???


    codice:
    public int isRightLarger(BinaryTree<E> T, Position<E> v){
    int numSinistro = 0; int numDestro = 0;int num = 0;
    
    while(true){
         if(T.hasLeft(v))
               numSinistro += isRightLarger(T, left());
         if(T.hasRigt(v))
               numDestro += isRightLarger(T, right());
    
    
         if(numDestri >= numSinistri){
               num = numDestri + numSinistri + 1;
               break;
         }
    
         else{
    	    num = -1;
    	    break;
         }
    }
    return num;
    }

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    Le domande su Java hanno una sezione dedicata.
    Sposto la discussione e invito a postare in quest'area le domande relative a questo linguaggio.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    57
    Anche io devo risolvere questo problema, sono passati 3 anni, in effetti la soluzione ricorsiva naturale per contare il numero dei nodi è quella data all'inizio, però non funziona perché restituendo -1 non dà il numero dei nodi e da un risultato che non serve a niente. Infatti può capitare che un sottoalbero sinistro del figlio sinistro del nodo iniziale abbia più nodi del destro ma insieme hanno più nodi del sottoalbero destro radicato nel nodo iniziale.
    Quindi bisogna per forza contare tutti i nodi, quando ritorna alla prima chiamata ricorsiva solo allora si può confrontare il numero dei nodi del sottalbero sinistro e destro radicato nel nodo iniziale e restituire -1 o il numero dei nodo.
    Ultima modifica di blob84; 29-08-2014 a 17:16

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 © 2025 vBulletin Solutions, Inc. All rights reserved.