Visualizzazione dei risultati da 1 a 4 su 4

Discussione: ][C++] Alberi Generici

  1. #1

    ][C++] Alberi Generici

    Devo scrivere una funzione int conta ( Node *tree ) che dato un albero generico memorizzato con la memorizzazione figlio- fratello restituisce il numero di nodi che hanno un figlio con la stessa etichetta del padre. Come fare ??



    Il tipo Node è definito come segue :

    Struct Node {
    Infotype label ;
    Node *left;
    Node *right; };


    left è il puntatore al primo figlio del nodo
    right è il puntatore al primo fratello del nodo



    grazie

  2. #2
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Non ho provato se funziona, ma dovrebbe essere cosi:

    Codice PHP:
    int etichettaUguale(Nodo *nodoNodo *padre){
            
    int res 0;
            if(
    nodo == NULL)
                return 
    0;
            if(
    padre != NULL)
                    if(
    nodo -> label == padre -> label)
                        
    res 1;
            
    //Il padre di mio figlio sono io
            
    res res etichettaUguale(leftnodo);
            
    //Il padre di mio fratello è mio padre
            
    res res etichettaUguale(rightpadre);
            return 
    res;


    la prima volta la devi invocare passando il puntatore al nodo radice e NULL come padre.

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  3. #3
    Ma la funzione deve per forza essere int conta (Node * tree)

  4. #4
    Ho provato a farlo cosi . Va bene ?

    codice:
    int conta (Node* tree){
    if(!tree) return o; //se l'albero è vuoto ritorna zero 
    int nodi;
         
    //se l'etichetta del padre e del figlio sinistro non sono  nulle 
         
    if (tree->label && tree->left->label){ 
         
    Node *p=tree->left->label //scorro la lista dei figli         
     while(p->right->label != tree->label)p=p->right->label;
     nodi++; }
          
       int nod_s,nod_d;
       nodi_s = nodi + conta(tree->left);
       nodi_d = nodi + conta(tree->right);
          
          
       return nodi+ nodi_s + nodi_d;

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.