Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 14 su 14

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590
    Quote Originariamente inviata da OmarCore93 Visualizza il messaggio
    Un esercizio:
    Dato un albero binario in cui ogni nodo è bianco o nero (identificali come vuoi), un sottoalbero monocolore è un sottoalbero avente tutti i nodi dello stesso colore: scrivere un algoritmo che calcola la dimensione massima di un sottoalbero monocolore nell'albero, dove per dimensione si intende la quantità di nodi del sottoalbero.
    Non so se sai cos'è la complessità computazionale, fatto sta che puoi farlo in tempo O(n), se non sai cos'è fallo pure senza tenere conto dell'efficienza.
    ho scritto questa roba che almeno dovrebbe contare le occorrenze del colore (so che non è quello che chiede il problema posto )
    ho usato le implementazioni usate nel corso ma credo sia tutto comprensibile (BTPosition<E> è un nodo dell'albero che usa tipo generico E, Position è l'interfaccia implementata da BTPosition).
    il problema qui è che num viene azzerato ad ogni ricorsione credo quindi?
    codice:
    	public int getMaxSubtree(E color, Position<E> c){
    		BTPosition<E> cc = checkPosition(c);
    		int num=0;
    		if(hasLeft(cc)) { 
    			if(color==cc.element()) num+=getMaxSubtree(color, left(cc));			
    			getMaxSubtree(color, left(cc));
    			}
    		if(hasRight(cc)){
    			if(color==cc.element()) num+=getMaxSubtree(color, left(cc));
    			getMaxSubtree(color, left(cc));
    		}
    		return num;
    	}

  2. #2
    Vabbè il Fold e il Quicksort li deve implementare ricorsivi per forza, grazie.

  3. #3
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Quote Originariamente inviata da OmarCore93 Visualizza il messaggio
    Vabbè il Fold e il Quicksort li deve implementare ricorsivi per forza, grazie.
    Ma da quando il fold di una lista deve per forza essere ricorsivo?!
    pseudocodice iterativo:
    codice:
    fold(acc, fun, list)
      for n in list
        acc = fun(acc, n)
      return acc
    Parimenti il quicksort non necessita di essere ricorsivo, anche se la cosa si complica...
    Comunque ricordiamoci sempre che ogni algoritmo ricorsivo può essere scritto linearmente con l'uso di cicli e/o stack e viceversa
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  4. #4
    Quote Originariamente inviata da Scara95 Visualizza il messaggio
    Ma da quando il fold di una lista deve per forza essere ricorsivo?!
    pseudocodice iterativo:
    codice:
    fold(acc, fun, list)
      for n in list
        acc = fun(acc, n)
      return acc
    Parimenti il quicksort non necessita di essere ricorsivo, anche se la cosa si complica...
    Comunque ricordiamoci sempre che ogni algoritmo ricorsivo può essere scritto linearmente con l'uso di cicli e/o stack e viceversa
    Vabbè forse sul Fold ho sbagliato, è che a me lo hanno insegnato ricorsivo ed effettivamente almeno il Foldr si presta molto bene ricorsivo. Per quanto riguarda il Quicksort, se parli proprio della versione fatta da Hoare, beh, è ricorsivo, è un algoritmo di ordinamento ricorsivo e mica me lo sto inventando io!

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