Viele Algorithmen geben an, dass Duplikate ausgeschlossen sind. Zum Beispiel präsentieren die Beispielalgorithmen im MIT-Algorithms-Buch normalerweise Beispiele ohne Duplikate. Es ist ziemlich trivial, Duplikate zu implementieren (entweder als Liste am Knoten oder in einer bestimmten Richtung).
Die meisten (die ich gesehen habe) geben links Kinder als < = und richtige Kinder als>. In der Praxis erfordert eine BST, die es erlaubt, dass entweder die rechten oder linken Kinder dem Wurzelknoten entsprechen, zusätzliche Rechenschritte, um eine Suche zu beenden, bei der doppelte Knoten zulässig sind.
Es empfiehlt sich, eine Liste am Knoten zu verwenden, um Duplikate zu speichern, da das Einfügen eines '=' - Wertes auf einer Seite eines Knotens den Baum auf dieser Seite neu schreiben muss, um den Knoten als untergeordneten Knoten zu platzieren als Enkel platziert, irgendwann unterhalb, was einige der Effizienz der Suche beseitigt.
Sie müssen sich daran erinnern, dass die meisten Klassenbeispiele vereinfacht dargestellt werden und das Konzept liefern. Sie sind in vielen realen Situationen nicht wert. Aber die Aussage "Jedes Element hat einen Schlüssel und keine zwei Elemente haben den gleichen Schlüssel" wird nicht durch die Verwendung einer Liste am Elementknoten verletzt.
Also gehen Sie mit, was Ihre Datenstrukturen Buch gesagt!
Edit:
Universal-Definition eines binären Suchbaum beinhaltet die Speicherung und für einen Schlüssel suchen eine Datenstruktur in eine von zwei Richtungen, basierend auf durchquert. Im pragmatischen Sinn, dh wenn der Wert <> ist, durchlaufen Sie die Datenstruktur in einer von zwei "Richtungen". In diesem Sinne ergeben doppelte Werte überhaupt keinen Sinn.
Dies unterscheidet sich von BSP oder binäre Suchpartition, aber nicht so unterschiedlich. Der Suchalgorithmus hat eine von zwei Richtungen für "Reisen" oder ist erfolgreich oder nicht erfolgreich. Daher entschuldige ich mich, dass meine ursprüngliche Antwort das Konzept einer "universellen Definition" nicht behandelt hat, da Duplikate wirklich ein Unterschied sind Thema (etwas, das Sie mit nach einer erfolgreichen Suche beschäftigen, der binären Suche nicht als Teil.)
Wenn Sie über eine Datenmenge verfügen, die doppelte Schlüssel enthält, sollten diese Elemente alle innerhalb des ersten Knotens im Baum mithilfe einer anderen Methode (verknüpfte Liste usw.) gespeichert werden. Der Baum sollte nur eindeutige Schlüssel enthalten. – nickf
Sollte vielleicht, aber es ist nicht für die Eigenschaften eines Suchbaums erforderlich. – SoapBox
# 1 Zustand einer BST: "Jeder Knoten (Element in der Struktur) hat einen eindeutigen Wert;" http: //en.wikipedia.org/wiki/Binary_search_tree – nickf