假设我有一个节点
[[5,3],[11,5],[13,3],[3,5],[6,1],[1,3],[8,6],[7,2],[2,2]]
并且想做一个类似
的树状结构
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/