web-dev-qa-db-fra.com

Avec 'N' no de noeuds, combien d'arbres de recherche binaires et binaires différents sont possibles?

Pour les arbres binaires: Il n'est pas nécessaire de prendre en compte les valeurs des noeuds de l'arbre, je ne m'intéresse qu'à différentes topologies d'arbre avec des noeuds 'N'.

Pour l'arbre de recherche binaire: Nous devons considérer les valeurs des noeuds de l'arbre.

68
siva

Je recommande cet article de mon collègue Nick Parlante (à l'époque où il était encore à Stanford). Le nombre d'arbres binaires structurellement différents (problème 12) a une solution récursive simple (qui, sous forme fermée, finit par être la formule catalane dont la réponse de @ codeka a déjà été mentionnée).

Je ne suis pas sûr de savoir comment le nombre d'arbres binaires de structure différente recherche (BST) pourrait différer de celui d'arbres binaires "ordinaires" - sauf que, si, tenez compte des valeurs de nœud d'arbre "vous voulez dire que chaque noeud peut être par exemple tout nombre compatible avec la condition BST, puis le nombre de BST différents (mais pas tous structurellement différents! -) est infini. Je doute que vous vouliez dire cela, alors veuillez clarifier ce que vous voulez faire avec un exemple!

38
Alex Martelli
  1. Nombre total d'arbres binaires sont = enter image description![enter image description here

  2. La somme sur i donne le nombre total d'arbres de recherche binaires à n nœuds. enter image description here

Le cas de base est t(0) = 1 et t(1) = 1, c'est-à-dire qu'il existe un BST vide et un BST avec un nœud . enter image description here

Ainsi, en général, vous pouvez calculer le nombre total d'arbres de recherche binaire à l'aide de la formule ci-dessus. On m'a posé une question dans Google interview liée à cette formule. La question était de savoir combien d'arbres de recherche binaire sont possibles avec 6 sommets. Donc, la réponse est t(6) = 132

Je pense que je vous ai donné une idée ...

72
Black_Rider

Le nombre d'arbres binaires peut être calculé à l'aide de nombre catalan .

Le nombre d'arbres de recherche binaires peut être vu comme une solution récursive. c'est-à-dire nombre d'arbres de recherche binaires = (nombre de à gauche sous-arbres de recherche binaires) * (nombre de à droite sous-arbres de recherche binaire) * (manières de choisir la racine)

Dans une BST, seul l'ordre relatif entre les éléments est important. Donc, sans aucune perte de généralité, nous pouvons supposer que les éléments distincts dans l’arbre sont 1, 2, 3, 4, ...., n. Aussi, supposons que le nombre de BST soit représenté par f (n) pour n éléments.

Nous avons maintenant les cas multiples pour choisir la racine.

  1. choisissez 1 comme racine, non élément peut être inséré dans le sous-arbre de gauche. n-1 des éléments seront insérés dans le sous-arbre de droite.
  2. Choisissez 2 comme racine, 1 élément peut être inséré dans le sous-arbre de gauche. n-2 éléments peuvent être insérés dans le sous-arbre de droite.
  3. Choisissez 3 comme racine, 2 élément peut être inséré dans le sous-arbre de gauche. n-3 éléments peuvent être insérés dans le sous-arbre de droite.

...... De même, pour i-th élément en tant que racine, i-1 les éléments peuvent être à gauche et ni à droite.

Ces sous-arbres sont eux-mêmes BST, nous pouvons donc résumer la formule comme suit:

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

Cas de base, f(0) = 1, car il existe exactement 1 façon de créer un fichier BST avec 0 nœud. f(1) = 1, comme il y a exactement 1 façon de faire un BST avec 1 nœud.

Final Formula

29
chirag1992m

Si non des nœuds sont N Alors.

N ° différent de BST = Catalan (N)
Nombre différent d’arbres binaires structurellement différents = Catalan (N)

Nombre différent d’arbres binaires sont = N! * Catalan (N)

10
Atiq

Eric Lippert a récemment publié une série d'articles très détaillés sur son blog: " Chaque arbre binaire disponible " et " Chaque arbre disponible " (plus encore après ).

En réponse à votre question spécifique, il dit:

Le nombre d'arbres binaires à n nœuds est donné par le nombres catalans , qui possède de nombreuses propriétés intéressantes. Le nième numéro de catalan est déterminé par la formule (2n)!/(n + 1)! n !, qui croît de manière exponentielle.

10
Dean Harding

Différents arbres binaires à n nœuds:

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

où C = combinaison par exemple.

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