Come determinare se un albero binario è simmetrica?

December 8

Come determinare se un albero binario è simmetrica?


Un albero binario è uno dei modi di dati è organizzata in un computer. Si tratta di una raccolta di "record" disposti in modo specifico che rende i record di facile accesso. L'albero binario ha un punto di ingresso --- la radice, che è l'indirizzo di un record. Un record può contenere qualsiasi informazione, ma se è un albero binario, esso conterrà sempre due indirizzi ad altri record in memoria. Idealmente, i due indirizzi nella radice saranno l'inizio di percorsi allo stesso numero di record. In altre parole, l'albero sarà simmetrica.

istruzione

1 Definire alcuni termini di base in modo che possiamo descrivere cosa significhi per un albero per essere simmetrica. I nodi terminali in un albero sono chiamati le foglie. Nel record foglia, entrambi gli indirizzi sono vuote. Gli indirizzi di nodi interni hanno indirizzi di altri dischi e diciamo che questi indirizzi "puntare al sottoalberi sinistro e destro". Un percorso è quello che otteniamo se seguiamo i link degli indirizzi da un nodo ad una foglia. Il più lungo percorso --- maggior numero di record --- da un nodo è la profondità dell'albero che inizia con quel nodo.

2 Scrivere la funzione che esamina ogni nodo in un albero e trova la profondità delle sottostrutture. Il modo standard per definire la simmetria di un albero binario è "un albero binario è simmetrica se le profondità delle sottoalberi di qualsiasi nodo differiscono di non più di uno." La funzione di profondità può essere descritto utilizzando tre casi: La profondità da record di X è pari a zero se gli indirizzi di entrambe le sottostrutture sono vuoti. Se solo indirizzo è vuota, la profondità è quella più la profondità dell'altro sottostruttura. Se nessuno dei due indirizzi è vuoto, la profondità è uno più le profondità massime dei due sottostrutture.

3 Utilizzare la funzione di profondità di scrivere la funzione che indica se un albero è simmetrica. Inizia alla radice dell'albero e trovare la profondità di ogni sottostruttura. Chiamare le profondità D1 e D2. Se d1 = d2, o D1 = D2 + 1 o D2 = d1 + 1, quindi impostare la variabile s "true"; altrimenti rendere s "false". restituire il valore di s come valore della funzione di simmetria-test. In ogni fase del controllo di simmetria esaminare il rendimento della simmetria prova del sottoalberi sinistro e destro. Se entrambi sono simmetriche, restituire il valore "vero". Il valore finale che viene restituito dal nodo descriverà la simmetria della struttura.

Consigli e avvertenze

  • Una volta trovato che un nodo --- tra cui la radice --- è sbilanciato, non c'è bisogno di cercare il resto della struttura. Costruire questo collegamento nel vostro algoritmo può rendere molto più veloce.
  • Non dimenticare di controllare per il caso particolare in cui l'albero non ha nodi. Un albero vuoto shold essere considerato simmetrica.