python - 如果我想从字符串中创建一个树结构?

标签 python algorithm tree

假设我有一个节点

[[5,3],[11,5],[13,3],[3,5],[6,1],[1,3],[8,6],[7,2],[2,2]]   

并且想做一个类似
的树状结构

enter image description here

    class Tree:
        def __init__(self):
            self.parent =None
            self.left = None
            self.right = None
            self.data = None

for i in lst:
    print(i)
    if root==None:
        root = Tree()
        root.data = i
    else:
        if root.left == None or root.right==None:
            if root.data[0] < l[0]: root.right = l
            else: root.left = l
        else:

我卡在这里是为了用list构造树形结构
还是有更好或更有效的方法来解决这个问题?

最佳答案

您的列表似乎包含节点的坐标。节点之间的边是根据它们的空间位置构建的。在这种情况下,将列表中的第一个节点作为整个树的根(正如您的算法所做的那样)是一个过于大胆的决定。

我不确定这是否是解决问题的最有效方法(从运行时复杂性的角度来看),但我会首先按 Y 坐标对列表进行排序。原因很简单——有根树中的节点总是分层的。因此,根节点必须具有最高的 Y 坐标。找到根节点(排序列表中的第一个节点)后,继续下一层。并且决定列表中的下一个节点应该是当前节点的左 child 还是右 child 将基于它的 X 坐标。然后对左右子树进行递归。

关于python - 如果我想从字符串中创建一个树结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57781626/

相关文章:

javascript - 根据子节点数量动态调整 d3 树布局的大小

algorithm - 如何检测某个范围是否(部分)位于另一个范围内?

python - $与小组一起放松并计数

python - 使用Python OpenCV的ANN实现以实现手写识别

python - 操作系统错误: [Errno 13] Permission denied message while trying to run python3 -m pyftpdlib -p 21

java - 存储多个数字范围以供将来搜索的有效方法

javascript - 从物化路径构建 JSON 树

python - django 无法读取静态文件夹中的 css 文件

algorithm - 连续子数组的最大和不大于 k

c - 在单调递增然后递减的序列cera中找到一个数字