绘制二叉树图形时的空间节点

时间:2019-04-13 00:37:34

标签: python-3.x binary-tree

我制作了一个使用matplotlib绘制二叉树的程序,它非常适合小树。但是,当树木变大时,图中就会有很多重叠。我想知道如何改善在x轴上隔开节点的方式,以防止它们重叠。

我为spacing尝试了不同的值,但这是我想到的最好的值。

    def getPoints(self, x=0, y=0, spacing=0, n=1):
        res = []
        if self.left:
            res = res + self.left.getPoints(x-1-spacing, y-1, spacing+(1/(n+1)), n+1)

        res.append((x, y, self.data))

        if self.right:
            res = res + self.right.getPoints(x+1+spacing, y-1, spacing+(1/n), n+1)
        return res

该代码在我的Node类中,并且仅按顺序遍历所有点。我应该如何更改间距以使其不重叠?too much overlap

1 个答案:

答案 0 :(得分:0)

我解决了节点数量过多的问题。我在节点类中添加了$user = User::find($request['id']); $user->polls()->sync($request['pool_ids']); //$request['pool_ids'] -> ["6","7"] 来跟踪它在哪一层上,并在检查中添加了它以查看它在树的哪一侧上,以便节点的指向不会偏离树的另一侧。

self.layers