Was ist "Rang" in einem binären Suchbaum und wie kann er nützlich sein?

8

Ich habe ein bisschen Probleme damit, mir Gedanken darüber zu machen, was ein binärer Suchbaum ist und warum es wichtig ist, einen Rang zu haben. Ich hoffe, dass jemand ein paar Dinge für mich klären kann.

Was ich untersucht habe:
Nach dem, was ich gelesen habe, ist ein binärer Suchbaum ein Baum, an den jedem Knoten eine Variable "Rang" zugeordnet ist.

In der Frage hier gibt jemand an, dass Sie Folgendes tun können, um den Rang eines Knotens in einem binären Suchbaum zu bestimmen:

Beginnen Sie den Rang bei Null. Summieren Sie die Größe aller linken Teilbäume, an denen die Suche überspringt, während die binäre Suche von der Wurzel aus fortgesetzt wird. Schließen Sie auch die Knoten entlang des Pfads ein, die kleiner als das gesuchte Element sind. Dies sind nur die Eltern der richtigen Kinder auf dem Suchpfad.

Fragen:
Der Rang scheint nur eine Zahl zu sein, die angibt, wie viele Knoten (plus einer für die Wurzel) benötigt werden, um zu einem bestimmten Knoten in einem Baum zu gelangen. Ist das richtig? Es schien mir nicht richtig zu sein, nur weil das so aussieht, als würde der Rang eines Knotens der Tiefe eines Knotens entsprechen.

Was ist der Unterschied zwischen "Gewicht" und "Rang"? Wenn einem Knoten in einem bestimmten binären Suchbaum eine Gewichtung zugeordnet ist, ist dies nur ein zufälliger Wert, der ihm vom Benutzer / Entwickler zugewiesen wurde?

Was bringt es schließlich, einen Rang zu haben? Mein erster Gedanke ist, dass damit Prioritäten angegeben werden können. Warum sollte der Entwickler in diesem Fall jedoch nicht einfach Gewichte verwenden?

Andere Dinge:
Ich habe mir auch die Seite hier angesehen . Es erklärt, wie man den Rang berechnet, aber ich bin immer noch nicht davon überzeugt, dass ich das Konzept noch verstehe.

Vielen Dank für jede Hilfe.

JustBlossom
quelle

Antworten:

11

Gemäß diesem Buch (Kapitel 3.2) hat ein Knoten in einer BST einen Rangk wenn genau kandere Schlüssel in der BST sind kleiner. Wenn Sie also alle BST-Knoten nach ihren Schlüsseln ordnen, dann jeder Knoten mit Rangk werde nehmen k-th Platz.

HEKTO
quelle
1

Ich denke, es hängt davon ab, ob Sie eine Rangvereinigung nach Größe oder Größe durchführen. Der Rang eines Knotens unter Verwendung der Rangvereinigung nach Größe kann angeben, wie viele Knoten sich im Teilbaum dieses Knotens befinden. Der Rang eines Knotens unter Verwendung der Rangvereinigung nach Höhe würde angeben, wie viele Kanten sich auf dem Pfad von diesem Knoten zum am weitesten entfernten Blatt im Teilbaum dieses Knotens befinden.

Helenie Gray
quelle
0

Hinzufügen zur obigen Antwort von HEKTO, um den Rang in einer BST mit eindeutigen Elementen zu berechnen,

der Rang eines linken Kindes = Rang des Elternteils - 1 - Anzahl der Elemente in seinem rechten Teilbaum

und,

der Rang eines rechten Kindes = Rang des Elternteils + 1 + Anzahl der Elemente in seinem linken Teilbaum.

Es kann verwendet werden, um jeden allgemeinen zu finden ichthOrdnungsstatistik in der BST in O (h) -Zeit, dh O (log n) -Zeit, wenn der Baum ausgeglichen ist. Daher ist es nützlich, den Median der Elemente oder das größte / kleinste Element unter den Elementen zu finden.

shashank.b
quelle