n叉树遍历方法的问题
Problem with tree traversal method for n-ary tree
我有一个 Tree class 和一个私有嵌套 Node class。我正在尝试编写一个遍历方法,但问题是我只能打印出我的树的第一层。
我不确定mu遍历方法是否有问题。因为我看不到另一种写法。我认为问题来自 ins
方法,该方法在树的特定索引中插入一个子节点。我想我正在插入不同的对象。
在此先感谢您的帮助
您的插入已损坏。您首先通过复制节点 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
,再插入进去。保持你的语法并假设一些数据成员是 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_ptr
s 而不是原始指针重写它,你将解决其中的许多问题。
我有一个 Tree class 和一个私有嵌套 Node class。我正在尝试编写一个遍历方法,但问题是我只能打印出我的树的第一层。
我不确定mu遍历方法是否有问题。因为我看不到另一种写法。我认为问题来自 ins
方法,该方法在树的特定索引中插入一个子节点。我想我正在插入不同的对象。
在此先感谢您的帮助
您的插入已损坏。您首先通过复制节点 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
,再插入进去。保持你的语法并假设一些数据成员是 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_ptr
s 而不是原始指针重写它,你将解决其中的许多问题。