Ваша вставка не работает. Сначала вы вставляете узлы B
и C
, копируя их:
_info->getChildren()[index] = childTree;
и только затем вставляете узлы D
и E
в исходные деревья n1_1
иn1_2
. Самый простой способ как-то исправить ошибку - изменить порядок вставок:
n1_1.ins(0, n1_1_1);
n1_2.ins(0, n1_2_1);
n1.ins(0, n1_1);
n1.ins(1, n1_2);
В качестве альтернативы, вы можете вставлять узлы непосредственно в дерево. То есть сначала получите соответствующий Tree
, затем вставьте в него. Сохранение синтаксиса и допущение, что некоторые члены данных являются общедоступными:
n1.ins(0, n1_1);
n1.ins(1, n1_2);
n1._info->_children[0].ins(0, n1_1_1); // n1._info->_children[0]) is not n1_1
n1._info->_children[1].ins(1, n1_2_1); // n1._info->_children[1]) is not n1_2
В вашем коде есть множество других проблем, которые необходимо решить. Если бы вы могли переписать его с std::unique_ptr
s вместо необработанных указателей, вы разрешите многие из них.