У меня есть это дерево, и я хотел сгладить дерево по порядку (без учета регистра), я создаю extract_nodes_containing_string
для извлечения листьев, но следующий код не работает:
class Node(object):
def __init__(self, name, children=None):
self.name = name
self.children = children or []
def __repr__(self):
return '<Node name={}>'.format(self.name)
def extract_nodes_containing_string(self, needle):
# TODO: Please implement me
# needs to be case insensitive
if needle is None: return needle
self.getflatten(needle)
def getflatten(self, root):
if root is None: return
self.getflatten(root.left)
self.getflatten(root.right)
current = root.left
if current is None: return
while current.right is not None:
current = current.right
current.right = root.right
root.right = root.left
root.left = None
# Example:
def create_tree():
return Node('root', [
Node("MaGaZiNo", [
Node("I"),
Node("Love"),
Node("magazino")
]),
Node("Hello", [
Node("Hello", [
Node("Hello", [
Node("World")
])
])
])
])
root = create_tree()
print(root.extract_nodes_containing_string('root') == [root])
Это было бызамечательно, если кто-нибудь может мне помочь.