У меня есть дерево, в котором я хочу динамически добавлять или удалять узлы. Сейчас я просто хочу сосредоточиться на добавлении узлов. Я хочу создать класс python таким образом, чтобы добавление одного узла пересчитывало атрибуты (координаты осей x и y) затронутых узлов. Я прикрепил диаграммы ниже, чтобы лучше объяснить поведение, которое я хочу обработать с помощью скрипта Python. этапы построения дерева

Я хочу создать класс Node, но не уверен, как создавать и обрабатывать значения x с помощью методов. Кто-нибудь может пролить свет? Есть ссылки на блоги?

1
abhijeet more 22 Ноя 2022 в 22:01
Информация, необходимая для ответа на ваш вопрос, должна содержаться в самом вопросе в виде текста, а не на каком-то внешнем сайте.
 – 
chepner
22 Ноя 2022 в 22:05

1 ответ

Вероятно, есть библиотеки, делающие это. Если вы хотите реализовать это самостоятельно, может помочь следующий подход:

  1. Найдите высоту дерева. Используйте его, чтобы найти значение y в нижней строке.
  2. Равномерно распределите все листовые узлы в y. Сгруппируйте их по родителям. При необходимости добавьте еще немного промежутка между узлами с разными родителями.
  3. Поднявшись на один уровень выше, поместите родителя группы выше среднего узла (узлов). Вычисление y должно быть тривиальным.
  4. Повторяйте 3, пока не будут размещены все узлы.
0
burkay 22 Ноя 2022 в 22:09