【问题标题】:N-ary tree in pythonpython中的N-ary树
【发布时间】:2014-06-02 21:58:55
【问题描述】:

我想创建一个 N 叉树,其中每个节点都包含一个键(名称)和一个值。

1 个根,然后 N 个具有两个字段的子节点 = 名称和关联值 并且每个孩子都有 N-children,有 2 个字段。

寻找更简单的方法而不使用仅使用字典和列表的类(如果可能的话??)。

class Node():
    #Do something
    # ....

【问题讨论】:

  • 你的意思是像{'name': ..., 'value': ..., 'children': [...]}
  • 但它不像树。如果我在某个节点,我应该只能访问它的子节点
  • 我不明白你的问题是什么。您可以访问node['children']
  • @pankajudaas:这是针对一个节点的。名为'children' 的列表将包含对其他看起来相同的节点的引用。这棵树只有孩子才能去,这是很正常的。如果要返回,则必须在其他地方记住上层节点。

标签: python python-2.7 python-3.x data-structures tree


【解决方案1】:

如果你坚持不使用类:

def create_node(name, value):
    return {
        'name': name,
        'value': value,
        'children': []
    }

def add_child(node, obj):
    node['children'].append(obj)

########################################
node = create_node('foo', 0)
add_child(node, create_node('bar', 1))

print(node) 
# Result: {'name': 'foo', 'value': 0, 'children': [{'name': 'bar', 'value': 1, 'children': []}]}

【讨论】:

    【解决方案2】:
    class Node(object):
        def __init__(self, name, value):
            self.name = name
            self.value = value
            self.children = []
        def add_child(self, obj):
            self.children.append(obj)
    

    您说您正在寻找一种“不使用类的更简单方法”,但我在这里的主张是,10 次中有 9 次使用类来实现此将是更简单的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-18
      • 1970-01-01
      • 2017-10-21
      • 1970-01-01
      • 2017-11-28
      相关资源
      最近更新 更多