it-swarm.com.de

Wie viele verschiedene binäre und binäre Suchbäume sind mit 'N' Anzahl von Knoten möglich?

Für binäre Bäume: Es müssen keine Baumknotenwerte berücksichtigt werden. Ich interessiere mich nur für verschiedene Baumtopologien mit 'N' Knoten.

Für binären Suchbaum: Wir müssen Baumknotenwerte berücksichtigen.

68
siva

Ich empfehle diesen Artikel von meinem Kollegen Nick Parlante (von damals, als er noch in Stanford war). Die Anzahl der strukturell unterschiedlichen Binärbäume (Problem 12) hat eine einfache rekursive Lösung (die in geschlossener Form die katalanische Formel ist, auf die @ codekas Antwort bereits eingegangen ist).

Ich bin mir nicht sicher, wie sich die Anzahl der strukturell unterschiedlichen binären search Bäume (kurz BSTs) von der der "einfachen" binären Bäume unterscheiden würde - außer dass, wenn man "Baumknotenwerte" berücksichtigt "du meinst, dass jeder knoten zb sein kann Beliebige Zahl, die mit der BST-Bedingung kompatibel ist, dann ist die Anzahl der verschiedenen (aber nicht aller strukturell verschiedenen! -) BSTs unendlich. Ich bezweifle, dass du das meinst, also kläre bitte, was du mache mit einem Beispiel meinst!

38
Alex Martelli
  1. Die Gesamtzahl der binären Bäume ist = enter image description![enter image description here

  2. Summieren über i ergibt die Gesamtzahl der binären Suchbäume mit n Knoten. enter image description here

Der Basisfall ist t(0) = 1 und t(1) = 1, dh es gibt eine leere BST und eine BST mit einem Knoten . enter image description here

Im Allgemeinen können Sie also die Gesamtzahl der binären Suchbäume mit der obigen Formel berechnen. Ich wurde eine Frage in Google Interview im Zusammenhang mit dieser Formel gestellt. Die Frage war, wie viele binäre Suchbäume insgesamt mit 6 Eckpunkten möglich sind. Die Antwort lautet also t(6) = 132

Ich glaube, ich habe dir eine Idee gegeben ...

72
Black_Rider

Die Anzahl der Binärbäume kann mit katalanische Zahl berechnet werden.

Die Anzahl der binären Suchbäume kann als rekursive Lösung angesehen werden. dh Anzahl der binären Suchbäume = (Anzahl der linken binären Suchunterbäume) * (Anzahl der rechten binäre Suchunterbäume) * (Auswahl der Wurzel)

In einer BST ist nur die relative Reihenfolge zwischen den Elementen von Bedeutung. Ohne Einschränkung der Allgemeinheit können wir also davon ausgehen, dass die einzelnen Elemente im Baum 1, 2, 3, 4, ...., n sind. Lassen Sie auch die Anzahl der BST durch f (n) für n Elemente dargestellt werden.

Jetzt haben wir mehrere Fälle für die Auswahl der Wurzel.

  1. wähle 1 als root, nein Element kann in den linken Teilbaum eingefügt werden. n-1 Elemente werden in den rechten Teilbaum eingefügt.
  2. Wählen Sie 2 als Wurzel, 1 Element kann im linken Teilbaum eingefügt werden. n-2 Elemente können im rechten Teilbaum eingefügt werden.
  3. Wählen Sie 3 als Wurzel, 2 Element kann im linken Teilbaum eingefügt werden. n-3 Elemente können im rechten Teilbaum eingefügt werden.

...... In ähnlicher Weise können für i-th Element als Wurzel i-1 Elemente auf der linken Seite und ni sein rechts.

Diese Unterbäume sind selbst BST, daher können wir die Formel wie folgt zusammenfassen:

f (n) f(0)f(n-1) + f(1)f(n-2) + .......... + f (n-1) f (0)

Basisfälle, f(0) = 1, da es genau 1 Möglichkeit gibt, eine BST mit 0 Knoten zu erstellen. f(1) = 1, as Es gibt genau 1 Möglichkeit, eine BST mit 1 Knoten zu erstellen.

Final Formula

29
chirag1992m

Wenn nein gegeben. von Knoten sind N Dann.

Unterschiedliche Anzahl der BST = Katalanisch (N)
Unterschiedliche Anzahl strukturell unterschiedlicher Binärbäume = Katalanisch (N)

Unterschiedliche Anzahl der Binärbäume = N! * Katalanisch (N)

10
Atiq

Eric Lippert hatte kürzlich eine sehr ausführliche Reihe von Blog-Posts zu diesem Thema: " Jeder binäre Baum, den es gibt " und " Jeder Baum, den es gibt " (und einige weitere danach) ).

Auf Ihre spezielle Frage antwortet er:

Die Anzahl der Binärbäume mit n Knoten wird durch katalanische Zahlen angegeben, die viele interessante Eigenschaften haben. Die n-te katalanische Zahl wird durch die Formel (2n) bestimmt!/(n + 1)! n !, das exponentiell wächst.

10
Dean Harding

Verschiedene binäre Bäume mit n Knoten:

(1/(n+1))*(2nCn)

wobei C = Kombination z.

n=6,
possible binary trees=(1/7)*(12C6)=132
5
Sarang
(2n)!/n!*(n+1)!
4
karthik
The number of possible binary search tree with n nodes (elements,items) is

=(2n C n) / (n+1) = ( factorial (2n) / factorial (n) * factorial (2n - n) ) / ( n + 1 ) 

where 'n' is number of nodes  (elements,items ) 

Example :

for 
n=1 BST=1,
n=2 BST 2,
n=3 BST=5,
n=4 BST=14 etc
1
Vinayak