2010-05-11 8 views
2

J'essaie de comprendre comment faire une traversée de précommande d'un Btree. Je sais que précommander généralement fonctionne traversal comme ceci:traversée de pré-codeur d'un Btree

preorder(node) 
{ 
print value in node 
preorder(left child) 
preorder(right child) 
} 

Ce qui est déroutant pour moi est de savoir comment faire ce travail avec un Btree, puisque dans chaque nœud, il y a plusieurs valeurs et plusieurs pointeurs de l'enfant. Lors de l'impression des valeurs, toutes les valeurs du noeud sont-elles imprimées avant de descendre dans l'enfant de gauche?

Chaque nœud ressemble à ceci:

child1 valeur1 child2 valeur2 enfant3 value3 enfant4

Aussi, pourquoi quelqu'un voudrait faire un traversal pré-commande d'un Btree, car un parcours infixe est ce qui va afficher les valeurs Dans l'ordre croissant?

+1

"... pourquoi quelqu'un voudrait faire une traversée de précommande d'un Btree ...". Je ne sais pas. Vous êtes celui qui demande comment le faire; Je présume que vous avez une certaine motivation pour le faire. Ou est ce devoir, peut-être? –

+0

Dans un arbre, il y a exactement deux pointeurs enfants, un pour l'enfant gauche et un pour l'enfant droit. Les valeurs sont imprimées dans l'ordre où vos codes les impriment. Btrees peut être utilisé pour des choses * autres * que le stockage de données triées. – WhirlWind

+0

Les arbres ne sont pas des arbres binaires; chaque noeud peut avoir plus de deux pointeurs. Le nombre de pointeurs dans chaque nœud est un de plus que le nombre de clés dans chaque nœud. – neuromancer

Répondre

2

Imprimez toutes les valeurs du nœud actuel dans un ordre défini (ce qui dépend de vous, bien que de gauche à droite soit une valeur par défaut), puis visitez chaque nœud enfant (encore une fois, l'ordre vous appartient)).

Questions connexes