У меня древовидная структура данных, как показано ниже:Как заменить поддерево в питоне
class Node(object):
def __init__(self, data):
self.data = data
self.children = []
def add_child(self, obj):
self.children.append(obj)
Затем я создал метод, чтобы достигнуть его.
def replace(node, newNode):
if node.data == 1:
node = newNode
return
else:
for i in xrange(0, len(node.children)):
replace(node.children[i], newNode)
Этот метод называется просто так:
replace(mytree,newNode)
Поскольку это рекурсивный вызов, я думаю, что объект разрушаться и назначение не происходит.
Я попробовал его вручную:
mytree.children[0].children[0] = newNode
то дерево правильно обновляется. Как я могу достичь этого, используя мой метод выше?
Я гарантированно заменяю только часть дерева. Нужно ли нам условие 'if node.value == 1'? – user3764893
Я принял это условие из вашего кода. Он сообщает вам, какой узел заменить. Если вы хотите заменить какой-либо другой узел, измените это условие (возможно, передайте значение 'data'?). – Blckknght
Хорошо, я понял. Этот ответ определенно решает мою проблему :) – user3764893