Nwlapcug.com


Come determinare se un albero binario è simmetrico?

Come determinare se un albero binario è simmetrico?


Un albero binario è uno dei modi in cui i dati sono organizzati in un computer. È una raccolta di "record", organizzato in modo specifico che rende facile accesso i record. L'albero binario ha un punto di ingresso---la radice, ovvero l'indirizzo di un record. Un record può contenere tutte le informazioni, ma se è un albero binario, conterrà sempre due indirizzi ad altri record in memoria. Idealmente, i due indirizzi nella radice sarà l'inizio dei percorsi per lo stesso numero di record. In altre parole, l'albero sarà simmetrica.

Istruzioni

1

Definire alcuni termini base così possiamo descrivere cosa significhi per un albero a essere simmetrica. I terminali nodi in un albero sono chiamati le foglie. Nei record di foglia, entrambi gli indirizzi sono vuoti. Gli indirizzi in nodi interni dispongono di indirizzi di altri record e diciamo che questi indirizzi "scegliere i sottoalberi destro e sinistro." Un percorso è quello che otteniamo se seguiamo i collegamenti di indirizzo da un nodo a una foglia. Il percorso più lungo---il più grande numero di record---da un nodo è la profondità dell'albero che inizia con quel nodo.

2

Scrivere la funzione che cercherà ogni nodo in un albero e la profondità delle sottostrutture. Il modo standard per definire la simmetria in un albero binario è "un albero binario è simmetrico se la profondità delle sottostrutture di qualsiasi nodo differiscono di non più di uno." La funzione di profondità può essere descritta usando tre casi: la profondità da record X è zero se gli indirizzi di entrambi sottoalberi sono vuoti. Se solo un indirizzo è vuoto, la profondità è uno più la profondità della sottostruttura di altre. Se nessuno dei due indirizzi sono vuoto, la profondità è uno più profondità massima di due sottostrutture.

3

Utilizzare la funzione di profondità per scrivere la funzione che indica se un albero è simmetrico. Avviare alla radice dell'albero e trovare la profondità di ogni sottoalbero. Chiamare la profondità d1 e d2. Se d1 = d2, o d1 = d2 + 1 o d2 = d1 + 1, quindi impostare la variabile s su "true"; in caso contrario fare s "false." restituire il valore di s come valore della funzione simmetria-test. In ogni fase di simmetria check guardare il ritorno della simmetria-prova dei sottoalberi destro e sinistro. Se entrambi sono simmetriche, restituire il valore "true". Il valore finale che viene restituito dal nodo descriverà la simmetria dell'albero.

Consigli & Avvertenze

  • Una volta che si scopre che un nodo---compreso la radice---è squilibrato, non è necessario cercare nel resto dell'albero. Costruire questa scorciatoia verso il vostro algoritmo può rendere molto più veloce.
  • Non dimenticate di controllare per il caso speciale quando l'albero non dispone di nodi. Un albero vuoto dovrebbe essere considerato simmetrico.