当前位置: 首页 > 知识库问答 >
问题:

用树定义的树节点

阚英睿
2023-03-14

我正在用python处理树,这就是我试图解决的问题。

我所有的节点都有列表。对于每个父母,通过一次删除一个元素,从父母列表中提取孩子的列表。

假设node1是列表1[1,2,3],我希望node1有3个子项(在本例中),其中每个子项都是通过每次删除一个项从列表1中提取的列表。所以node2=[2,3]node3=[1,3]和node4=[1,2]

我正在使用anytree库,但在复杂节点上找不到足够的文档。我目前已经编写了这个方法,但我怀疑语法:

  from anytree import Node, RenderTree
 #some othercode
    def createNodes(parentnode):
        for i in (0,K,1):
            childnode=Node(parentnode.pop(i), parent=parentnode)
            return childnode

此代码是否作为解决方案工作?p、 s:这是我在Anytrees上遵循的教程[https://anytree.readthedocs.io/en/2.6.0/intro.html#basics][1]

共有1个答案

吴浩博
2023-03-14

试试这个:

class Node:
    def __init__(self, data):
        self.data = data
        self.child = 3*[None]
        for i in range(len(data)):
            elem = data.pop(i)
            self.child[i] = data
            print(self.child[i])
            data.insert(i, elem)


data = [1, 2, 3]
root = Node(data)

输出:

[2, 3]
[1, 3]
[1, 2]

或者,您可以尝试以下方法

class Node:
    def __init__(self, data, parent):
        self.parent = parent
        self.data = data

def createNodes(parentnode):
    data = parentnode.data
    for i in range(len(data)):
        elem = data.pop(i)
        childnode = Node(data, parent=parentnode)
        print(childnode.data)
        data.insert(i, elem)

root = Node([1, 2, 3], None)
createNodes(root)

输出:

[2, 3]
[1, 3]
[1, 2]
 类似资料:
  • 我正在通过为Ruby编写树库来研究树遍历算法。就基本建筑而言,似乎有两个合理的选择; 只有树。树有根值和子树 存在树和节点。一个节点有一个值,子节点。树有根节点和子树。子树的根节点是树的根节点的子节点 其中一种设计更常见吗?在这个库的开发过程中,1)太幼稚或2)不必要的冗余会变得“明显”吗?本图书馆的预期用途为一般用途;我希望它可以用于巨树、二进制搜索树或解析树等。 我能想到其他不那么合理的建筑;

  • 如果我没弄错的话,树通常是一个列表,其中的元素按特定顺序排列。孩子们不在他们自己的子列表中,他们都在同一个列表中。 所以,我试图创建一个Tree类,其中包含TreeNodes(类)使用Tree类中的List。 我如何跟踪父母/孩子/叶子?如果父母“父母1”,有两个孩子“孩子A”和“孩子B”,我如何将他们联系在一起?

  • 我希望在选择树中的某个节点时,动态地向该节点添加一些自定义渲染(可能是一个边框,也可能是一些颜色更改)。 我试过这个: 但它似乎不起作用。 我还希望渲染器是可添加的(或链接的)。我已经在节点上进行了类似图标的渲染,因此新的渲染器应该与其他渲染器互补。不确定extjs是否可以做到这一点?

  • 基本上,我想知道我是否可以创建一个树并在JavaFX上自定义它...我试着去做,但到目前为止还不能用这个代码做任何事情... 我在质疑自己,这是否是正确的“技术”,可以解决我想做的事情... 我从https://docs.oracle.com/javafx/2/ui_controls/tree-view.htm#babjgggf看到了这个教程,但我对这个教程真的很困惑...我不太了解细胞工厂的机制

  • 问题内容: 我对二叉树有一些疑问: Wikipedia指出,当“完整的二叉树是其中所有级别(可能除了最后一个级别)均已完全填充且所有节点都位于最左侧”的二叉树时,该二叉树即已 完成 。最后的“越远越好”的段落是什么意思? 如果(1)它是空的,或者(2)它的左右子级是平衡的,并且左树的高度在以下高度的1之内,则格式正确的二叉树被称为“高度平衡”。正确的树,取自如何确定二叉树是否平衡?,这是正确的还是

  • 参考这个问题的答案 平衡二叉树是: 左子树和右子树的高度最多相差一个,并且 左子树是平衡的,并且 右边的子树是平衡的 现在,用同样的例子 树的根在A. 现在,在查看高度平衡树的定义时,第一点表示: > 左右子树的高度最多相差一个 如果我当前位于节点A,要确定A左子树的高度,如果我计算: 从A(D)或 如果我当前位于节点A,为了确定A的右子树的高度,如果我计算: 从A(F)或 节点C从A(扩展名C)