n叉树遍历方法的问题

Problem with tree traversal method for n-ary tree

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

在此先感谢您的帮助

您的插入已损坏。您首先通过复制节点 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,再插入进去。保持你的语法并假设一些数据成员是 public:

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_ptrs 而不是原始指针重写它,你将解决其中的许多问题。