Come impostare un binario Cerca albero in Python

November 10

Binari alberi di ricerca sono uno dei tipi di dati astratti di base concepiti in programmazione di computer. Attraverso un albero binario di ricerca, è possibile definire una struttura di base tramite algoritmi di ingresso e la ricerca che rende l'individuazione e il recupero di informazioni semplice e sistematico. Dal momento che si tratta di un tipo di dati "astratto", è possibile implementare in qualche forma nella maggior parte qualsiasi linguaggio di programmazione, tra cui Python. Creazione di una classe per rappresentare l'albero, si può facilmente costruire un semplice albero binario di ricerca.

istruzione

1 Creare una classe per rappresentare l'albero. Tutto il codice cadrà in questa classe e controllare come le funzioni degli alberi:

Classe BinaryTree:

2 Definire i dati degli alberi nella classe. In questa particolare classe, si definisce l'albero come una lista Python. L'elenco nella albero binario inizia con una dimensione iniziale di 50:

. . . _tree = [-1] * 50

3 Creare la funzione di inserimento. Questa funzione utilizza la matematica semplice per determinare punti di inserimento. Essa controllerà ogni spot. Se il punto contiene un numero negativo (-1), allora il posto è vuoto e inserirà. In caso contrario, si muove al punto successivo. L'inserimento in un albero binario significa che i valori minori si sposteranno al nodo "sinistra" (2i + 1, dove "i" è l'indice di elenco corrente) e valori maggiori si sposterà al "destro" nodo (2i + 2):

. . . def inserire (auto, valore):
. . . index = 0
. . . mentre self._tree [index]> = 0:
. . . se il valore> self._tree [index]:
. . . index = (2

index) + 1
. . . altro:
. . . index = (2 index) + 2
. . . self._tree [indice] = valore

4 Creare una funzione di ricerca. La funzione di ricerca si comporterà in modo simile alla funzione di inserimento, ma controllerà solo se il valore esiste nella struttura:

. . . Ricerca DEF (auto, valore):
. . . index = 0
. . . mentre self._tree [index]> = 0:
. . . se self._tree [index] Valore ==:
. . . restituirà true
. . . tornare false

Consigli e avvertenze

  • Questa implementazione è solo uno scheletro di base di un albero binario. Non preforme operazioni più complesse come il controllo di confine o la rimozione voce.