n元树的树遍历方法问题

时间:2019-11-08 14:20:05

标签: c++ tree traversal insertion

我有一个 Tree 类和一个私有嵌套的 Node 类。我正在尝试编写一个遍历方法,问题是我只能打印出树的第一层。 我不确定mu遍历方法是否有问题。因为我看不到另一种书写方式。我认为问题来自ins方法,该方法在树的特定索引中插入了一个孩子。我想我正在插入不同的对象。

非常感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您的插入已损坏。首先,通过复制节点BC来插入节点:

_info->getChildren()[index] = childTree;

然后,您将节点DE插入原始树n1_1n1_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而不是原始指针来重写它,那么您将解决许多问题。