Alberi Binari di Ricerca - Implementazione in C (ABR/BST)

แชร์
ฝัง
  • เผยแพร่เมื่อ 23 ม.ค. 2025

ความคิดเห็น • 23

  • @vralf10
    @vralf10 5 ปีที่แล้ว

    L'ho trovato molto utile, grazie mille, forse uno dei migliori per quanto riguarda gli alberi binari di ricerca, grazie mille

    • @cirogallo1286
      @cirogallo1286  5 ปีที่แล้ว

      Grazie mille per l'apprezzamento: sono molto contento che il video ti sia stato utile. In verità l'ho realizzato quasi come test per capire se qualche video di programmazione/informatica, che è il mio reale campo di studio, potesse essere apprezzato. Grazie ancora :)

  • @pochopsp
    @pochopsp 5 ปีที่แล้ว

    Sei sempre grande Ciro! Grazie per questo video. Mi tornerà sicuramente utile per l'esame di Algoritmi e Strutture Dati :)

    • @cirogallo1286
      @cirogallo1286  5 ปีที่แล้ว

      Grazie a te che mi hai sempre supportato :)

  • @jumponair
    @jumponair 5 ปีที่แล้ว +1

    Grandissimo ❤️

  • @CloseWave
    @CloseWave 5 ปีที่แล้ว

    C'è un modo più articolato di usare il programma che hai fatto anzichè stamparmi i numeri che inserisco al contrario?

    • @cirogallo1286
      @cirogallo1286  5 ปีที่แล้ว

      Dipende, qual è il tuo obiettivo?
      In generale gli ABR eccellono nei casi in cui si debbano memorizzare dati di qualunque genere, ma sui quali deve essere possibile definire una relazione d'ordine, in modo che le ricerche siano lineari sull'altezza.

    • @CloseWave
      @CloseWave 5 ปีที่แล้ว

      @@cirogallo1286 Non saprei, si può usare per ordinare anche stringhe o fare ordine all'inerno di matrici e vettori? Cioè l'esempio più complesso nel quale si utilizza ABR nella vita di tutti i giorni, tramite app o altro?

    • @cirogallo1286
      @cirogallo1286  5 ปีที่แล้ว

      ​@@CloseWave si può usare persino per ordinare oggetti custom (il C non è un linguaggio object oriented, quindi non si può parlare propriamente di oggetti, ma di record/struct). Mi spiego: al posto della struct tree che ho definito io, potresti definire una qualunque altra struct X contenente dati eterogenei, dopodiché crei una funzione che faccia il confronto di di struct X (ad esempio, date due struct X1 e X2 di tipo X, restituisce 0, 1 o -1 a seconda che X1 sia minore, maggiore o uguale a X2) e nella funzione ABR_insert, in particolare nell'if, anziché utilizzare T->key>key utilizzi la funzione di confronto appena definita. In questo modo puoi generalizzare il programma a qualunque tipo.
      Per quanto riguarda le applicazioni, pensa ad esempio che un ABR si potrebbe tranquillamente utilizzare per memorizzare i nodi di un grafo, o ancora sono a conoscenza di database NoSQL che li utilizzano per memorizzare documenti. Inoltre, ci sono molte implementazioni di ABR che, grazie ad operazioni di rotazione, riescono a mantenere l'altezza logaritmica sul numero di nodi, e con essa quindi le operazioni di inserimento, ricerca ed eliminazione. Se ti va puoi fare una ricerca su alberi AVL o Red and Black.
      Spero di essere stato esaustivo nella risposta :)

    • @CloseWave
      @CloseWave 5 ปีที่แล้ว

      @@cirogallo1286 Si molto, grazie! Mi sono buttato a piedi pari in questo mondo dell'informatica/matematica (sono diplomato in chimica ma ho deciso a 30 anni di ricominciare a studiare informatica), faccio un po fatica a capire certe cose, per fortuna che ci sono online persone come te disposte a spiegarmi. Grazie ancora!

  • @emanueleferrari5774
    @emanueleferrari5774 5 ปีที่แล้ว

    Grazie per il video. Studiando Ingegneria Informatica, è utile poter vedere anche degli esempi pratici di programmazione in C (linguaggio che molti, oggi, hanno messo da parte).

    • @cirogallo1286
      @cirogallo1286  5 ปีที่แล้ว +1

      Ciao, grazie a te per il commento. Certamente il C è stato accantonato in favore di linguaggi object oriented, ma a mio parere resta e resterà sempre l'abc della programmazione: a fini didattici non ha eguali. Per questo mi è sembrato giusto farci almeno un video; in più nulla esclude che ce ne saranno di altri :)

    • @emanueleferrari5774
      @emanueleferrari5774 5 ปีที่แล้ว

      Ciro Gallo Ottimo ;)

  • @mysteriousXsecret
    @mysteriousXsecret 4 ปีที่แล้ว

    Non tratterai la cancellazione di un nodo, oppure del sottoalbero che abbia come radice quel nodo?

    • @cirogallo1286
      @cirogallo1286  4 ปีที่แล้ว +1

      Ciao, effettivamente mi sono completamente dimenticato di questo filone dedicato agli algoritmi. Dato che mi hai dato l'input, mi sa che farò anche il video sulla cancellazione e perché no, magari allargarmi anche a qualche altro algoritmo notevole, come quelli sui grafi. Grazie per il suggerimento :)

    • @mysteriousXsecret
      @mysteriousXsecret 4 ปีที่แล้ว

      @@cirogallo1286 Grazie a te

  • @gt3090
    @gt3090 4 ปีที่แล้ว +1

    Complimenti per il video. Però ti sei dimenticato del caso in cui la key da inserire sia uguale alla root, in quel caso che si fa? O lo dici nei prossimi video?

  • @TanKee
    @TanKee 5 ปีที่แล้ว +1

  • @antonioderussis4220
    @antonioderussis4220 4 ปีที่แล้ว

    Root è meglio inizializzarlo prima del for...
    comunque grande Ciro

    • @cirogallo1286
      @cirogallo1286  4 ปีที่แล้ว +1

      Ciao, grazie per aver visto il video. Root è inizializzato a NULL alla riga 22; era questo o intendevi altro?

    • @antonioderussis4220
      @antonioderussis4220 4 ปีที่แล้ว

      Intendevo di inizializzarla alla riga 26 (prima del for ) perché nella mia ide i valori una volta stampati erano nulli se inizializzavo root in riga 22

    • @antonioderussis4220
      @antonioderussis4220 4 ปีที่แล้ว

      Ciro Gallo @

    • @cirogallo1286
      @cirogallo1286  4 ปีที่แล้ว

      @@antonioderussis4220 mmm è molto strano: inizializzare la variabile alla riga 22 o 26 non può fare differenza.