Я создал программу для построения бинарных деревьев, используя 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
и просто проходит через все точки в порядке обхода.Как изменить интервал, чтобы он не перекрывался?