Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    10

    Universita - algoritmo alberi AVl

    Un albero binario di ricerca(BST) è un AVL se ogni sottoalbero avente come radice un nodo dell'albero è bilanciato in altezza.
    2)si descriva un metodo che verifichi con costo computazionale lineare se un BST è un albero AVL


    qualkuno sa darmi un idea su come farlo??

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Moderazione

    Letto il regolamento?
    E' obbligatorio specificare il linguaggio di programmazione.

    Inoltre, non è consentita la richiesta di codice completo, ma solo interventi correttivi/migliorativi su codice proprio. Per le richieste di codice completo esiste la sezione "Offro Lavoro / Collaborazione".

    PS: L'indicazione "Università" nel titolo non serve a nulla e a nessuno...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    10
    1) infatti cè scritto "qualkuno sa darmi un idea su come farlo??" e nn datemi il codice...
    2) ho provato a metterlo nella sezione Progrmmazione->JAva ma dicono ke nn è la sezione giusta...
    3)l'indicazione universita è utile a chi affronta lo stesso argomento con esami universitari...per lo meno a me ha aiutato a volte nella ricerca di thread appositi

    Cmq ho pensato di poter usare questo metodo....anke se lo devo provare..causa problemi con jcreator



    public boolean isAVL(BSTnode r) { //dove r è il riferimento alla radice

    boolean temp =true;
    int a = height(r.left);
    int b = height(r.right);
    if ((Math.abs(a-b)) >2)
    temp=false;
    else
    isAVL(r.left) && isAVL(r.right);
    return temp;

    }

    public int height(BSTnode r) {
    if (r==o) return 0;
    else
    return 1 +height(r.left) + height(r.right);
    }

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da spud85
    1) infatti cè scritto "qualkuno sa darmi un idea su come farlo??" e nn datemi il codice...
    E va bene... ma se non indichi con quale linguaggio intendi realizzare la cosa, nessuno saprà mai se ti sta dando un'informazione utile... e non mi pare il caso di fornire un'informazione per ciascun linguaggio, per non rendere incomprensibile il thread.
    2) ho provato a metterlo nella sezione Progrmmazione->JAva ma dicono ke nn è la sezione giusta...
    L'utente che ha scritto questa cosa, probabilmente, lo ha fatto proprio perchè la tua richiesta era troppo generica...
    3)l'indicazione universita è utile a chi affronta lo stesso argomento con esami universitari...per lo meno a me ha aiutato a volte nella ricerca di thread appositi
    Lo stesso argomento può essere affrontato in diversi ambiti, non solo ristretti a quello universitario, soprattutto in un forum frequentato da una moltitudine di persone (studenti di ogni grado, appassionati e professionisti, che possono tutti avere il tuo stesso problema): ergo, tale indicazione è del tutto inutile (ma ci si può sorvolare tranquillamente sopra). Assolutamente non inutile, invece, l'informazione sul linguaggio.

    Visto che, quindi, si tratta di Java, provvedo io ad inserire tale informazione nel titolo (come da regolamento) e a spostare nell'apposita sezione. L'altra discussione ti è stata chiusa per altri motivi (cross-posting).

    Cmq ho pensato di poter usare questo metodo....anke se lo devo provare..causa problemi con jcreator


    codice:
    public boolean isAVL(BSTnode r)  { //dove r è il riferimento alla radice
     
        boolean temp =true;
        int a = height(r.left);
        int b = height(r.right);
        if ((Math.abs(a-b)) >2) 
               temp=false;
        else 
              isAVL(r.left) && isAVL(r.right);
         return temp;
    
    }
    
    public int height(BSTnode r)  {
        if (r==o) return 0;
        else
        return 1 +height(r.left) + height(r.right); 
    }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    10
    Originariamente inviato da spud85
    1) infatti cè scritto "qualkuno sa darmi un idea su come farlo??" e nn datemi il codice...
    2) ho provato a metterlo nella sezione Progrmmazione->JAva ma dicono ke nn è la sezione giusta...
    3)l'indicazione universita è utile a chi affronta lo stesso argomento con esami universitari...per lo meno a me ha aiutato a volte nella ricerca di thread appositi

    Cmq ho pensato di poter usare questo metodo....anke se lo devo provare..causa problemi con jcreator



    public boolean isAVL(BSTnode r) { //dove r è il riferimento alla radice

    boolean temp =true;
    int a = height(r.left);
    int b = height(r.right);
    if ((Math.abs(a-b)) >2)
    temp=false;
    else
    isAVL(r.left) && isAVL(r.right);
    return temp;

    }

    public int height(BSTnode r) {
    if (r==o) return 0;
    else
    return 1 +height(r.left) + height(r.right);
    }


    no...ho sbagliato il metodo height mi da il numero di nodi e nn l'altezza dell'albero...

  6. #6
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Codice PHP:
    /**
    * ...
    * @param r la radice dell'albero AVL
    */
    public boolean isAVL(BSTnode r)


        
    boolean temp true;
        
    int a height(r.left);
        
    int b height(r.right);

        
    // Immagino sia la definizione di BST bilanciato
        
    if ((Math.abs(a-b)) > 2)
            
    temp=false;
        else
            
    // forse temp = ...
            
    isAVL(r.left) && isAVL(r.right);
        return 
    temp;

    }

    public 
    int height(BSTnode r)
    {
        
    // [b]o[/b] da dove salta fuori?
        // Forse dovresti controllare se entrambi i figli sono nulli
        
    if (r==o)
            return 
    0;
        else
            return 
    +height(r.left) + height(r.right);

    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    10
    Originariamente inviato da Pastore12
    Codice PHP:
    /**
    * ...
    * @param r la radice dell'albero AVL
    */
    public boolean isAVL(BSTnode r)


        
    boolean temp true;
        
    int a height(r.left);
        
    int b height(r.right);

        
    // Immagino sia la definizione di BST bilanciato
        
    if ((Math.abs(a-b)) > 2)
            
    temp=false;
        else
            
    // forse temp = ...
            
    isAVL(r.left) && isAVL(r.right);
        return 
    temp;

    }

    public 
    int height(BSTnode r)
    {
        
    // [b]o[/b] da dove salta fuori?
        // Forse dovresti controllare se entrambi i figli sono nulli
        
    if (r==o)
            return 
    0;
        else
            return 
    +height(r.left) + height(r.right);

    il metodo height è sbagliato....restituisce il numero di nodi anziche il numero di livelli dell'albero....

  8. #8
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Non me ne ero accorto.. be' facile no? altro calcolo ricorsivo:

    altezza padre = 1 + max (altezza figlio destro, altezza figlio sinistro)

    Solo che a sto' punto siamo ancora in O(n)? mmm...
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    10
    credo di aver risolto...
    il metodo height dovrebbe essere cosi...

    public static int height(BSTnode r) {
    if(r ==null) //albero vuoto
    return -1;
    else {
    int a = height(a.left);
    int b= height(b.right);
    if (a>b) return a+1;
    else return b+1;
    }
    }

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    10
    si infatti....
    ho appena risolto......
    quindi sono stato bocciato all'esame di algoritmi per un esercizio cosi facile VVoVe:

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.