Numero di possibili percorsi di ricerca durante la ricerca in BST


13

Ho la seguente domanda, ma non ho una risposta per questo. Gradirei se il mio metodo è corretto:

Q. Quando si cerca il valore chiave 60 in un albero di ricerca binario, i nodi contenenti i valori chiave 10, 20, 40, 50, 70, 80, 90 vengono attraversati, non necessariamente nell'ordine indicato. Quanti ordini diversi sono possibili in cui questi valori chiave possono verificarsi sul percorso di ricerca dal nodo radice contenente il valore 60?

(A) 35 (B) 64 (C) 128 (D) 5040

Dalla domanda, capisco che tutti i nodi dati devono essere inclusi in attraversamento e alla fine dobbiamo raggiungere la chiave, 60. Ad esempio, una tale combinazione sarebbe:

10, 20, 40, 50, 90, 80, 70, 60.

Poiché dobbiamo attraversare tutti i nodi indicati sopra, dobbiamo iniziare con 10 o 90. Se iniziamo con 20, non raggiungeremo 10 (poiché 60> 20 e attraverseremo la sottostruttura destra di 20)

Allo stesso modo, non possiamo iniziare con 80, perché non saremo in grado di raggiungere 90, poiché 80> 60, attraverseremo il sottoalbero sinistro di 80 e quindi non raggiungeremo 90.

Consente di prendere 10. I nodi rimanenti sono 20, 40, 50, 70, 80, 90. Il nodo successivo può essere 20 o 90. Non è possibile prendere altri nodi per lo stesso motivo menzionato in precedenza.

Se consideriamo in modo simile, ad ogni livello abbiamo due scelte. Poiché ci sono 7 nodi, due scelte per i primi 6 e nessuna scelta per l'ultimo. Quindi ci sono totalmente

2*2*2*2*2*2*1 permutazioni = =2664

  1. Questa è una risposta corretta?

  2. In caso contrario, qual è l'approccio migliore?

  3. Vorrei generalizzare. Se vengono forniti nodi, i percorsi di ricerca possibili totali sarebbero2 n - 1n2n-1

Risposte:


15

Se cercando la chiave 60 si arriva ad un numero di inferiore a 60, andiamo a destra (dove i numeri più grandi sono) e non abbiamo mai incontrare i numeri meno di K . Tale argomento può essere ripetuto, quindi i numeri 10, 20, 40, 50 devono comparire lungo la ricerca in quell'ordine.KK

Allo stesso modo, se cercando la chiave 60 si raggiunge un numero superiore a 60, si va leftt (dove i numeri più piccoli sono) e non abbiamo mai numeri si incontrano più grande di K . Quindi i numeri 90, 80, 70 devono comparire lungo la ricerca in quell'ordine.KK

Le sequenze 10, 20, 30, 40, 50 e 90, 80, 70 possono quindi essere mescolate insieme, purché le loro sottosequenze rimangano intatte. Quindi possiamo avere 10, 20, 40, 50, 90, 80, 70, ma anche 10, 20, 90, 30, 40, 80, 70, 50.

Ora possiamo calcolare il numero, scegliendo la posizione di numeri grandi e piccoli. Vedi il commento di Aryabhata. Abbiamo due sequenze di 4 e 3 numeri. In quanti modi posso mescolarli? Nelle ultime 7 posizioni devo scegliere 3 posizioni per i numeri più grandi (e le restanti 4 per i numeri più piccoli). Posso scegliere questi in modi. Dopo aver corretto queste posizioni, conosciamo l'intera sequenza. Ad esempio, il mio primo esempio ha posizioni SSSSLLL il secondo ha SSLSLL S.(73)

Chiedete una generalizzazione. I numeri sempre inferiori al numero trovato e i numeri più grandi vengono fissati nel loro ordine relativo. I numeri più piccoli devono salire, i numeri degli arger devono scendere. Il numero è quindi .y ( x + yXy(X+yy)

PS (modificato). Grazie a Gilles, che ha notato che 30 non è nella domanda.


Mi piacerebbe sicuramente provare. Poiché il n. 90,80,70 deve essere unito, consideriamoli come un singolo n. e può essere posizionato in 6 punti: _ 10 _ 20 _ 30 _ 40 _ 50 _ Quindi questo è Se per la stessa analogia, il numero n. [10,20,30,40,50] può essere inserito 4 posti, sono Ma deve essere diviso per combinazioni comuni che si stanno verificando (cosa che non sono in grado di capire)2 42624
avi

@avi No, non devono stare insieme, solo in questo ordine: 10, 20, 90, 30, 40, 80, 70, 50 sono OK.
Hendrik Jan

1
@avi: prova a pensare in questo modo: grande e piccolo. Ora hai 8 punti, con 5 piccoli e 3 grandi. Come li riempi? 8 scegli 3. Il che arriva a 56, e presumo sia anche quello che ha avuto Hendrik.
Aryabhata,

2
@HendrikJan Non c'erano 30 nella domanda originale, c'erano solo 7 valori. E 7 scegli 3 è (A).
Gilles 'SO- smetti di essere malvagio' il

1
@HendrikJan - puoi spiegarmelo: sempre i numeri inferiori al numero trovato e i numeri più grandi sono fissi nel loro ordine relativoyXy
avi

1

Convertiremo le mosse in testo. Si dice che durante la ricerca abbiamo attraversato questi nodi

inserisci qui la descrizione dell'immagine

come si può vedere, quelli rossi sono più grandi di 60 e quelli blu sono più piccoli di 60.

{S,S,S,S,L,L,L}

7!4!×3!=35
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.