def descendant(self,node,val): if node == None : return False if val == Node.get_value(): self.printValues(Node.get_left()) #affichage de tous les noeuds de gauche self.printValues(Node.get_right()) #affichage de tous les noeuds de droite return True else : return self.descendant(Node.get_left(),val) or self.descendant(Node.get_right(),val)
def ancestors(self, node,val): if node == None : return False if Node.get_value()== val: return True elif self.ancestors(Node.get_left(),Node.get_value()) or self.ancestors(Node.get_right(),val ) :# On parcourt l'ensemble des noeuds de l'arbre comme pour belongs print(node)
def belongs(self,node,val): if node == None: return False elif Node.get_value()==val: return True return self.belongs(Node.get_left(),val) or self.belongs(Node.get_right(),val)
def numberinternalNode(self,node): if node == None : return 0 return ((self.size(Node.get_right())+self.size(Node.get_left())) - (self.numberLeaves(Node.get_left())+self.numberLeaves(Node.get_right())))
def numberLeaves(self,node): if node == None : return "Pas de feuilles" elif Node.get_right()==None and Node.get_left()==None : return self.numberLeaves(Node.get_left())+self.numberLeaves(Node.get_right())
def sumValues(self,node): if node == None : return 0 return self.sumValues(Node.get_right())+self.sumValues(Node.get_left())+Node.get_value()
def size(self,node): if node == None : return "vide" return self.size(Node.get_right())+self.size(Node.get_left()) + 1
if val == Node.get_value(): self.printValues(Node.get_left()) #affichage de tous les noeuds de gauche self.printValues(Node.get_right()) #affichage de tous les noeuds de droite return True else : return self.descendant(Node.get_left(),val) or self.descendant(Node.get_right(),val) def prefixe(selfs): if __name__ == '__main__': #création des noeuds de l'arbre noeud12 = Node(12) noeud5 = Node(5) noeud17 = Node(17) noeud6 = Node(6) noeud4 = Node(4) noeud19 = Node(19) noeud3 = Node(3) noeud18 = Node(18) noeud21= Node(21) #création de la racine de l'arbre arbre_binaire = BinaryTree(noeud12) #définition des fils/feuilles noeud12.set_left(noeud5) noeud12.set_right(noeud17)