Vous savez probablement comment parcourir une arborescence binaire dans l'ordre en utilisant la récursivité.
void visit(Node node) {
if(node.hasLeft()) {
visit(node.getLeft());
}
handleValue(node.value); // print or whatever
if(node.hasRight()) {
visit(node.getRight());
}
}
Vous remarquerez que lorsque vous faites cela, vous manipulez les feuilles déjà en ordre de gauche à droite, en plus de traiter les nœuds non-feuille.
Pour aller de droite à gauche, il suffit d'inverser l'ordre des instructions - alors visitez la droite, puis gérez la valeur, puis visitez la gauche.
Pour imprimer uniquement les nœuds feuille, vous devez simplement mettre une instruction if
autour de handleValue
, en lui indiquant de ne sortir que si le nœud est une feuille. Un noeud est une feuille s'il n'a ni noeud enfant gauche ni noeud droit.
Ce code imprimera les noeuds non-feuille et imprimera deux fois les noeuds feuilles. – Sildoreth
Je vois comment il aurait imprimé deux fois. Fixé. – Tombala
merci beaucoup les gars! J'apprécie vraiment votre temps et vos efforts! – ronnie