Форум сайта python.su
Всем привет, нужна помощь. Дана простая реализация бинарного дерева в виде класса Tree. В классе реализован метод добавления элементов к дереву. Задача – реализовать еще два метода:
метод find(value). В качестве аргумента метод принимает значение (число). Метод должен возвращать True, если элемент найден в дереве или False, если такой элемент отсутствует.
метод print(). Этот метод не принимает никаких аргументов. Результат работы метода – вывод структуры дерева (значений его элементов и иерархии) на экран (вывод может иметь любой осмысленный вид, но запрещается выводить все элементы в одну строку).
Плюсом будет имплементация специального метода для возможности использовать с инстансом класса Tree конструкцию вида:
root = Tree(10)
if 10 in root:
…
class Tree: def __init__(self, value, root=None): # left and right child nodes self.lchild = None self.rchild = None # node value self.value = value # parent element for current node self.root = root def add(self, value): # track current node (level) current_node = self # track parent node last_node = None # search the place to insert new node while current_node: last_node = current_node if value > current_node.value: current_node = current_node.rchild elif value < current_node.value: current_node = current_node.lchild else: # element already presented in tree return False # create new node and link it with parent new_node = Tree(value, last_node) if value > last_node.value: last_node.rchild = new_node else: last_node.lchild = new_node return True Пример работы класса: >> root = Tree(10) >> root.add(9) >> root.add(8) >> root.add(11) >> root.add(15) >> root.add(16) >> root.add(12) >> root.add(2) ‘‘‘ Поиск элемента ‘‘‘ >> root.find(11) True >> root.find(5) False ‘‘‘ Вывод элементов дерева ‘‘‘ >> root.print() 10 9 11 8 15 2 12 16
Отредактировано Hannibal (Фев. 23, 2017 18:03:25)
Офлайн
HannibalЗдесь вывод в неправильном (пропали пробелы) (на самом деле имеет вид треугольника)
‘‘‘ Вывод элементов дерева ‘‘‘
>> root.print() 10
9 11
8 15
2 12 16
Офлайн
Hannibal
Здесь вывод в неправильном
[code python][/code]
Офлайн
FishHookПоправил
Офлайн