L'attraversamento del pre-ordine di due alberi diversi può essere lo stesso anche se sono diversi?


11

Questa domanda praticamente spiega che possono, ma non mostra alcun esempio di due alberi diversi con lo stesso attraversamento pre-ordine.

Si dice anche che l'attraversamento in ordine di due alberi diversi può essere lo stesso sebbene strutturalmente diversi. C'è un esempio di questo?


2
Questo è un esercizio molto entry level. Cosa hai provato e dove ti sei bloccato?
Raffaello

1
Anche se si dispone del postordine, oltre al preordine, l'attraversamento, è comunque possibile ottenere alberi diversi. Perché l'albero non è unicamente possibile con il preordine e l'attraversamento postordine dati? È possibile trovare un esempio in ordine in Da rappresentazione in ordine a albero binario . Anche correlati / duplicati: quali combinazioni di sequenzializzazione pre, post e in ordine sono uniche?
Dukeling,

Risposte:


28

Esempi di alberi (immagine) :

     A:                 B:
     ‾‾                 ‾‾
     1                  1
    /                  / \
   2                  2   3
  /  
 3   

Questo è un esempio che si adatta al tuo scenario, Albero Il valore di una radice è 1, con un figlio sinistro con valore 2 e anche il figlio sinistro ha un figlio sinistro con valore 3.

Il valore della radice dell'albero B è 1, con un figlio sinistro con valore 2 e un figlio destro con valore 3.

In entrambi i casi l'attraversamento del preordine è 1-> 2-> 3.


11
Questo è in realtà un caso specifico di una regola generale che per ogni albero di un certo ordine, esiste un albero lineare di soli bambini di sinistra (o solo di destra) che ha lo stesso ordine.
Dancrumb,

5
@Dancrumb Che a sua volta è un caso specifico di una regola generale che per qualsiasi albero con N nodi e per qualsiasi forma di albero (= albero senza etichetta) con N nodi, esiste un modo per etichettare quest'ultimo in modo che condivida il traversal con l'ex. Questo vale per qualsiasi attraversamento (visita pre / post / in ordine).
chi,

8

nn1,2,...,n

Ciò significa che possiamo nominare i nodi di qualsiasi struttura ad albero binario in modo che genererà la stessa sequenza di preordine di quella di un altro albero.

Questo non funzionerà se dobbiamo assumere altre proprietà dell'albero. Ad esempio, se l'albero dovrebbe essere un albero di ricerca binario, con tutte le chiavi diverse, la sua sequenza di pre-ordine determinerà in modo univoco l'albero.


8

Argomento di conteggio

nnesimoCn=(2n)!/(n!(n+1)!).

    o         o         o         o         o
   /         /         / \         \         \
  o         o         o   o         o         o      .
 /           \                     /           \
o             o                   o             o

n!

(2n)!(n+1)!=2n(2n-1)...(n+2).

Al contrario ci sono solo n! traversate di un albero di nnodi. Dal momento che abbiamo appena moltiplicato il primo pern!, pertanto, nessun attraversamento può contenere l'intera struttura dell'albero per Cn>1 quindi n>1.E questo in generale vale per qualsiasi struttura di dati che ha più di una configurazione con nodi senza etichetta; non è necessario conoscere questo dettaglio sui numeri catalani, purché si sappia che esistono almeno due alberi binari senza etichetta di dimensionin.


1

Per quanto riguarda la tua seconda domanda, sì, due alberi strutturalmente diversi possono avere lo stesso attraversamento interno. Un esempio è:

     A:                 B:

     1                  2
    / \                  \
   2   3                  1
                           \
                            3

L'attraversamento interno di entrambi gli alberi è lo stesso. 2 -> 1 -> 3

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.