Voici un pseudo-code approximatif pour le faire. L'idée de base est de parcourir l'arbre couche par couche, en imprimant tous les nœuds de chaque couche sur une ligne. Chaque nœud est séparé par deux fois plus d'espace que les nœuds situés en dessous. Puisque l'arbre n'a pas toute la profondeur uniforme, il est artificiellement rembourré avec des nœuds virtuels pour occuper les espaces vides où les nœuds n'existent pas.
measure the depth of the tree, call that D
have two queues, called Q1 and Q2
enque the top node of the tree in Q1
for (i = D; --i>=0;){
foreach node in Q1 {
on first iteration of this inner loop, print 2^i - 1 spaces,
else print 2^(i+1) - 1 spaces.
if node == null print blank
else print node.value
if node.left exists enque node.left in Q2
else enque null in Q2
if node.right exists enque node.right in Q2
else enque null in Q2
}
copy Q2 to Q1
clear Q2
print end-of-line
}
Chaque espace imprimé est la largeur d'un champ numérique. Supposons que l'arbre a une profondeur D = 4. Ensuite, l'impression se présente comme suit:
// it looks like this, and the space sequences are
i = 3: -------n 7
i = 2: ---n-------n 3 7
i = 1: -n---n---n---n 1 3 3 3
i = 0: n-n-n-n-n-n-n-n 0 1 1 1 1 1 1 1
Un lien & l'image est morte – Jacob