Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di Tallid
    Registrato dal
    Jan 2009
    Messaggi
    76

    Visita simmetriva iterativa

    Mi è chiesto di scrive un algoritmo iterativo di visita simmetrica per un albero binario utilizzando come struttura dati ausiliaria una pila, ho scritto questo (pseudo codice)
    visitaSimmetrica(Node root){
    Stack s;
    push(s,u);
    while(s!=vuoto){
    u=pop(s);
    if(u.left!=null AND u.right!=null)vistita u
    else{
    if(u.right!=null)push(s,u.right)
    push(s,u)
    if(u.left!=null)push(s,u.left)
    }
    }

    }
    In questo modo se ho un solo nodo nell' albero lo visito e concludo altrimenti metto nella pila prima il figlio dx, poi la radice e poi il sx, successivamente varranno estratti in ordine inverso ossia in visita simmetrica , il problema sta nel fatto ca se prendiamo l'albero radice 6, figlio sx 5, figlio dx 7 dopo aver inserito i nodi ed estratto e visitato il 5 , una volta che estraggo l 1 reinserisco nuovamente i nodi.
    Qualcuno è in grado di aiutarmi ? Grazie

  2. #2
    Utente di HTML.it L'avatar di Tallid
    Registrato dal
    Jan 2009
    Messaggi
    76
    forse la domanda era un po stupida o posta male comunque ho risolo, posto la soluzione nel caso qualcuno la cerchi
    codice:
    public void printInOrderIter(Node root){ 
       Stack s=new Stack(); 
       Node curr=root; 
       while(!s.isEmpty()|| curr!=null){ 
          if(curr!=null){
             s.push(curr); 
            curr=curr.left; 
          } 
          else{ 
            curr=(Node)s.pop(); 
            System.out.println(curr.value); 
            curr=curr.right; 
          } 
    }

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