Форум сайта python.su
Здравствуйте!
Помогите, пожалуйста, написать простое дерево.
Насколько я понимаю, здесь много лишнего - но я не смог разобраться, как вообще работают деревья, везде только принципы построения бинарных деревьев или еще чего более сложного.
Как можно удалить элемент?
Нормально ли так записывать информацию?
И что должно быть написано в функции поиска информации у конкретного элемента?
class Node: def __init__(self, data = None, parent = None): self.data = data self.parent = parent self.elements = [] def write_data(self, data): self.data = data def add_node(self, index, data): self.index = index newNode = Node(data) newNode.parent = self self.elements.append(newNode) class Tree: def __init__(self, data, elements): self.root = Node() self.elements = [] self.data = data self.index = 0 def add_element(self, index, data, newElement): self.element = TreeNode() element.newNode(index) self.data = data element.write_data(data) def search(element, data): for i in element.data: if i == print element.data return self.data
Офлайн
Katoсложно смоделировать что-то, если не понимаешь, как оно устроено; в любом учебнике по “Data structures” обычно целая глава посвящена деревьям.
я не смог разобраться, как вообще работают деревья
Katoбинарное дерево - это самый простой вид дерева, не считая пустых деревьев :P
везде только принципы построения бинарных деревьев или еще чего более сложного
Katoбазовые функции вашего дерева определяете вы(!) в зависимости от поставленной задачи; действительно базовым является лишь наличие исходного элемента и дочерних (если они есть :), все остальное не базовое; например, в вашем случае, self.index - это специфическая характеристика упорядоченного дерева (не все деревья упорядоченные :)
написать простое дерево
Katoваш пример - смесь разных имплементаций
Нормально ли так записывать информацию?
if i == print element.data
Katoаналогично, вы решаете что: либо только информация о самом элементе, либо элемент + все дочерние и т.д.
И что должно быть написано в функции поиска информации у конкретного элемента?
class Node: def __init__(self, data = None, parent = None): self.data = data self.parent = parent class Tree: def __init__(self): self.root = Node() self.elements = [] def add_element(self, element): self.elements.append(element) def search(self, data): found=[] for element in self.elements if element.data==data: found.append(element) return found
Отредактировано Nata (Окт. 7, 2014 16:08:50)
Офлайн