Considereu la següent definició incomplerta de la classe @Tree@ que hauria d’implementar arbres generals no buits:
class Tree:
def __init__(self, x):
...
def add_child(self, a):
self.child.append(a)
def root(self):
return self.rt
def ith_child ...
...
def num_children ...
...
Completeu l’operació @__init__@, l’operació @ith_child@ que retorna l’-èsim fill de l’arbre (comptant des de zero), i l’operació @num_children@ que retorna el nombre de fills de l’arbre.
A més, definiu una subclasse @Pre@ de la classe @Tree@, tot afegint l’operació @preorder@ que retorna una llista amb el recorregut en preordre de l’arbre al qual s’aplica.
>>> t = Pre(2) >>> t.add_child(Pre(3)) >>> t.add_child(Pre(4)) >>> t.num_children() 2 >>> t.ith_child(1).add_child(Pre(5)) >>> t.preorder() [2, 3, 4, 5]