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.
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!
Nombre total d'arbres binaires sont =
La somme sur i donne le nombre total d'arbres de recherche binaires à n nœuds.
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 .
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 ...
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.
...... 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.
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)
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.
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
(2n)!/n!*(n+1)!
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