Sådan Set Up en binær søgning Tree i Python

January 7

Binær søgning træer er en af ​​de grundlæggende abstrakt datatype undfanget i computer programmering. Gennem en binær søgning træ, kan du definere en grundlæggende struktur ved input- og søge algoritmer, der gør lokalisering og hente information let og systematisk. Da det er en "abstrakt" datatype, kan du implementere det i en eller anden form i de fleste ethvert programmeringssprog, herunder Python. Oprettelse af en klasse til at repræsentere træet, kan du nemt bygge en simpel binær søgning træ.

Instruktioner

1 Opret en klasse til at repræsentere træet. Alle koden vil falde i denne klasse og kontrollere, hvordan træet funktioner:

klasse BinaryTree:

2 Definer træet data i klassen. I denne særlige klasse, du definere træet som en Python listen. Listen i binært træ begynder med en indledende størrelse på 50:

. . . _tree = [-1] * 50

3 Opret indsatsen funktionen. Denne funktion bruger simpel matematik til at bestemme indsætningspunkter. Det vil kontrollere hver plet. Hvis pletten indeholder et negativt tal (-1), så stedet er tom og vil indsætte. Hvis ikke, det går over til næste sted. Indsættelse i et binært træ betyder, at mindre værdier flytter til "venstre" node (2i + 1, hvor "i" er den aktuelle liste indeks) og større værdier vil flytte til "højre" node (2i + 2):

. . . def indsætte (self, værdi):
. . . index = 0
. . . mens self._tree [index]> = 0:
. . . hvis værdi> self._tree [indeks]:
. . . index = (2

index) + 1
. . . andet:
. . . index = (2 index) + 2
. . . self._tree [indeks] = værdi

4 Opret en søgefunktion. Søgefunktionen vil opføre sig på samme måde som indsatsen funktion, men vil kun kontrollere, hvis værdien findes i træet:

. . . def søgning (self, værdi):
. . . index = 0
. . . mens self._tree [index]> = 0:
. . . hvis self._tree [indeks] == værdi:
. . . returnere sandt
. . . returnere False

TIPS

  • Denne implementering er kun en grundlæggende skelet af en binær Tree. Det betyder ikke præforme mere komplicerede operationer såsom grænsen kontrol eller emne fjernelse.