Я пытаюсь решить эту проблему, когда новому присоединяющемуся одноранговому узлу будет присвоен индекс [0,1,2,... n-1] в зависимости от того, сколько одноранговых объектов уже существует (например, 8 существует -> новый одноранговый узел получит индекс 8).
Я хочу добавить эти одноранговые объекты в двоичное дерево на основе их индекса. Например, узел 0 присоединяется, и он будет корнем, тогда узел 1 и узел 2 будут левым и правым потомками узла 0.
Мне нужно только, чтобы бинарное дерево соответствовало правилу, согласно которому у него должно быть два потомка.
Вот пример:
0
/ \
1 2
/ \ / \
3 4 5 6
Моя проблема в том, что я не уверен, как на самом деле сделать эту вставку, чтобы сохранить правило двух детей. Сначала я предположил, что нормальное правило вставки BST будет работать, но как только я на самом деле закодировал его, я понял проблему поворота / ключа - я вставляю на основе индекса. Все просто станет правильным ребенком
Я действительно застрял в этом, но я думаю, что решение должно быть тривиальным, которое я просто не вижу. Любой совет?
Редактировать: Спасибо за помощь! Я думаю, что нашел что-то, что удовлетворит мои потребности, поэтому я оставлю это здесь. У меня будет неявная структура двоичного дерева. Присоединяющиеся одноранговые узлы помещаются в приоритетную очередь на основе их индекса. Это будет означать, могут ли они иметь назначенных им дочерних элементов, и одноранговый узел будет удален из этой очереди, как только у него будет 2 дочерних элемента.