Pseudocodice per l'implementazione non ricorsiva di altezza degli alberi e isBST

voti
4

Io sono nel processo di conversione di funzione ricorsiva per un BST per non ricorsivo per aiutare a preparare per un colloquio. Finora ho capito preorder, inorder, postorder, di ricerca, cancellare, inserire, e convertendo il BST a un elenco collegato circolare. Sto avendo difficoltà a capire come utilizzare pila o code per ottenere l'altezza e per trovare, se si tratta di un BST. Qualche consiglio sarebbe molto apprezzato. Non sto cercando il codice, ma la logica dietro il codice.

È pubblicato 14/09/2011 alle 03:03
fonte dall'utente
In altre lingue...                            


2 risposte

voti
5

Per cominciare, gran lavoro per preparare le interviste come questo! Spero che ti stai divertendo a giocare con questi algoritmi.

Cominciamo con il compito di provare a determinare se l'albero binario è un BST. Un modo per farlo è quello di fare una passeggiata in ordine simmetrico dell'albero e verificare se gli elementi sono ordinati. Ciò sarà vero se e solo se l'albero è un BST. Dal momento che si dispone già di codice per fare un inorder passeggiata degli elementi della pianta, si dovrebbe essere in grado di adattarsi facilmente il codice per verificare se gli elementi che vengono fuori della passeggiata simmetrico sono ordinati per tenere traccia dell'ultimo elemento che avete visto in la passeggiata simmetrico, quindi confrontando ogni elemento generato all'elemento precedente. Se i due sono fuori uso, l'albero non è un BST.

Per determinare l'altezza dell'albero, una possibilità sarebbe quella di prendere una qualsiasi delle ricerche che si è venuta in mente finora (preordine, postorder, simmetrico) e tenere traccia della altezza della pila in ogni punto. L'idea qui è che, poiché il tuo stack sarà sempre tenere traccia del percorso di ritorno da qualsiasi nodo fino alla radice, si può semplicemente a piedi l'albero e registrare la più profonda che si sia mai visto lo stack diventano. Questa profondità massima è allora l'altezza dell'albero.

Spero che questo ti aiuti! E buona fortuna con le interviste!

Risposto il 14/09/2011 a 03:17
fonte dall'utente

voti
0

Per trovare l'altezza dell'albero, è possibile utilizzare il [tempo O (n)] Morris attraversamento].

Per verificare se si tratta di un BST valida, fare una passeggiata in ordine simmetrico dell'albero. Spostare gli elementi in un array. Controllare se l'array è ordinato o meno per convalidare un BST.

Risposto il 14/09/2011 a 09:33
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more