我有一个 Tree 类和一个私有嵌套的 Node 类。我正在尝试编写一个遍历方法,问题是我只能打印出树的第一层。
我不确定mu遍历方法是否有问题。因为我看不到另一种书写方式。我认为问题来自ins
方法,该方法在树的特定索引中插入了一个孩子。我想我正在插入不同的对象。
非常感谢您的帮助
答案 0 :(得分:0)
您的插入已损坏。首先,通过复制节点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
而不是原始指针来重写它,那么您将解决许多问题。