Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 5, 2014 21:53:47

Kato
Зарегистрирован: 2012-11-26
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

деревья

Здравствуйте!
Помогите, пожалуйста, написать простое дерево.
Насколько я понимаю, здесь много лишнего - но я не смог разобраться, как вообще работают деревья, везде только принципы построения бинарных деревьев или еще чего более сложного.
Как можно удалить элемент?
Нормально ли так записывать информацию?
И что должно быть написано в функции поиска информации у конкретного элемента?

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

Офлайн

#2 Окт. 7, 2014 12:29:57

Nata
От:
Зарегистрирован: 2010-10-02
Сообщения: 87
Репутация: +  6  -
Профиль   Отправить e-mail  

деревья

Kato
я не смог разобраться, как вообще работают деревья
сложно смоделировать что-то, если не понимаешь, как оно устроено; в любом учебнике по “Data structures” обычно целая глава посвящена деревьям.

Kato
везде только принципы построения бинарных деревьев или еще чего более сложного
бинарное дерево - это самый простой вид дерева, не считая пустых деревьев :P

Kato
написать простое дерево
базовые функции вашего дерева определяете вы(!) в зависимости от поставленной задачи; действительно базовым является лишь наличие исходного элемента и дочерних (если они есть :), все остальное не базовое; например, в вашем случае, self.index - это специфическая характеристика упорядоченного дерева (не все деревья упорядоченные :)

Kato
Нормально ли так записывать информацию?
ваш пример - смесь разных имплементаций
откуда TreeNode() ?
if i ==
            print element.data
это тоже непонятно :)
Kato
И что должно быть написано в функции поиска информации у конкретного элемента?
аналогично, вы решаете что: либо только информация о самом элементе, либо элемент + все дочерние и т.д.

вот ваш “базовый” пример :D
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)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version