2010-04-02 6 views
7

Est-ce que b arbres et b + arbres ne stockent des données qu'à leurs feuilles? Je suppose qu'ils utilisent leurs nœuds internes pour rechercher les données requises.Est-ce que les arbres b et b + stockent uniquement des données sur les feuilles?

Est-ce le cas ou stockent-ils des données dans chaque nœud?

+0

Les arbres B + stockent uniquement des données dans la feuille. Les arbres B peuvent stocker des données dans les nœuds internes. –

Répondre

7

noeuds non-feuilles « enregistrements » contiennent

  • un pointeur (un noeud « adresse » de toutes sortes) à un nœud du niveau bas de l'arbre
  • la valeur de la clé de la première (ou le dernier, en fonction de la mise en œuvre) record en ce nœud

Ces non-feuilles « disques » sont énumérés en ordre de clé de telle sorte que par balayage (ou recherche binaire à l'intérieur) d'un noeud non-feuille, on sait que nœud dans le niveau suivant vers le bas peut con tain la valeur recherchée.

Les enregistrements de nœuds de feuille contiennent des enregistrements de données complets: la valeur de clé et tout le reste.

Par conséquent Les données "réelles" sont uniquement contenues dans les nœuds feuilles, les nœuds non-feuille contiennent uniquement [une copie de] les valeurs clés. pour une très faible proportion des données (cette proportion dépend du nombre moyen d'enregistrements de données trouvés dans un nœud feuille).

Ceci est illustré dans l'image suivante à partir du Wikipedia article on B+ Trees simple btree

Le nœud non-feuille, dans la partie supérieure, (la seule dans cet arbre simpliste) ne contient que deux disques de noeuds non-feuille, chacune avec une copie d'une valeur de clé (couleur bleuâtre) et un pointeur vers le nœud correspondant (couleur grise). Cet arbre n'a que deux niveaux, donc les "enregistrements" dans le nœud racine pointent vers les nœuds feuilles. On peut imaginer qu'il y a des niveaux supplémentaires (au-dessus de l'arbre le plus en haut représenté ci-dessous, appelez-le le "3-5 node"); Si tel était le cas, le nœud ci-dessus contiendrait (avec d'autres enregistrements similaires), un enregistrement avec la valeur clé 3 avec un pointeur sur le nœud "3-5".
Notez également que seules les valeurs de clé 3 et 5 sont contenues dans des noeuds non-feuilles (c'est-à-dire pas même toutes les valeurs de clé sont reproduites dans les noeuds non-feuilles).
BTW dans cet exemple, les noeuds non-feuilles contiennent la clé de la dernière enregistrement dans le nœud suivant (fonctionne également si le premier enregistrement ont été utilisés à la place, une légère différence dans la façon dont la logique de recherche est alors mis en œuvre) .

Les nœuds feuille contiennent la valeur de la clé (en bleuâtre également) et l'enregistrement de données correspondant (d1, d2 ... en gris). Le pointeur rouge représenté à la fin de chaque noeud feuille pointe vers le noeud feuille suivant, c'est-à-dire celui contenant l'enregistrement de données suivant dans l'ordre des clés; ces pointeurs sont utiles pour "scanner" une gamme d'enregistrements de données.

+0

effacé chaque concept de b + arbre ...! Merci beaucoup – rohit

1

Toutes les données sont dans les feuilles.

Wiki on B+.

0

Il y a une certaine confusion sur BTrees et B + Trees. B + Trees ne stocke que des données sur les nœuds feuille comme pointeurs. Cela signifie que les données doivent être stockées ailleurs. BTrees peut stocker des données sur chaque noeud. Il ya des avantages et des inconvénients pour chacun. J'ai remarqué que certains sites montrent BTrees exactement les mêmes que B + Trees.En général, BTrees sont meilleurs pour contenir les données réelles, et B + Trees sont beaucoup plus efficaces en tant qu'index.

Questions connexes