首页 > 解决方案 > 在 Python 中展平树

问题描述

我有这棵树,我想按顺序展平树(不区分大小写),我创建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])

如果有人可以帮助我,那就太好了。

标签: pythontreeextract

解决方案


推荐阅读