Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def next(self, node, position):
- """Trouver le noeud le plus proche à droite du noeud donné à la position donnée."""
- # On teste en bas à gauche pour voir si l'élément est égal. Si oui, on le retourne.
- if node.child[position].get_data()[-1][0] == node.get_data()[position][0]:
- # (enfant_gauche, position_le_plus_a_droite)
- return (node.child[position], len(node.child[position].get_data()))
- # Sinon, on veut aller directement en bas à droite (plus proche plus grand) s'il existe.
- if position + 1 < len(node.child):
- # (enfant_droit, position_le_plus_a_gauche)
- return (node.child[position + 1], 0)
- # Sinon, on regarde s'il y a une (position + 1) du même noeud. Si oui, on la retourne.
- if position + 1 < len(node.get_data()):
- # (noeud_actuel, position_a_droite_d_actuellement)
- return (node, position + 1)
- # Sinon, on trace la hiérarchie à partir du haut, on remonte au parent direct (à la bonne position),
- # et on retourne le parent si jamais il est plus grand, sinon, on remonte encore au parent, et si on
- # ne trouve jamais, on retourne None.
- #WIP
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement