class Tas(): def __init__(self): self.__values = [] def push(self, value): self.__values.append(value) def peek(self, i): # pop sans suppression return self.__values[i], i def fg(self, i): left_i = 2 * i + 1 if left_i > len(self.__values): return None, left_i else: return self.__values[left_i], left_i def fd(self, i): droite_i = 2 * i + 2 if droite_i > len(self.__values): return None, droite_i else: return self.__values[droite_i], droite_i def parent(self, i): return self.__values[(i - 1) // 2] def afficher(self): return ' '.join(str(v) for v in self.__values) def inserer(self, value): self.push(value) i = len(self.__values) - 1 while (i + 1) // 2 > 0: if self.__values[i] < self.parent(i): tmp = self.__values[i // 2] self.__values[i // 2] = self.__values[i] self.__values[i] = tmp i = i // 2 def supprimer(self, i): v = self.__values.pop(i) max_i = i n = len(self.__values) - 1 while self.__values[i] > self.fg(i)[0] or self.__values[i] > self.fd(i)[0]: max = self.__values[i] if i < n and max > self.fg(i)[0]: max_i = 2 * i + 1 if i < n and max > self.fd(i)[0]: max_i = 2 * i + 2 if max_i != i: self.__values[i], self.__values[max_i] = self.__values[max_i], self.__values[i] i = max_i return v