C++ n元树的树遍历方法问题
我有一个树类和一个私有嵌套的节点类。我正在尝试编写一个遍历方法,问题是我只能打印出树的第一级。 我不确定mu遍历方法是否有问题。因为我看不到另一种写作方式。我认为问题来自C++ n元树的树遍历方法问题,c++,tree,traversal,insertion,C++,Tree,Traversal,Insertion,我有一个树类和一个私有嵌套的节点类。我正在尝试编写一个遍历方法,问题是我只能打印出树的第一级。 我不确定mu遍历方法是否有问题。因为我看不到另一种写作方式。我认为问题来自ins方法,该方法在树的特定索引中插入一个子项。我想我正在插入不同的对象 高级感谢您的帮助您的插入已中断。首先通过复制节点来插入节点B和C: _info->getChildren()[index] = childTree; 然后将节点D和E插入原始树n1_1和n1_2。以某种方式修复错误的最简单方法是更改插入顺序: n1
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);
或者,您可以直接将节点插入到树中。也就是说,首先获取相应的树
,然后插入其中。保留语法并假设某些数据成员是公共的:
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而不是原始指针来重写它,你会解决很多问题。调试器怎么说?@Evg实际上我刚刚做了一个调试,我知道插入方法很好,问题是遍历方法,但我不明白它的作用是什么problem@Evg但是当我做n1.fils(0)时->fils(0)->print()代码>我得到了一个分段错误,这确实是错误的<代码>n1.fils(0)->fils(0)->print()代码>选择我根的第一个孩子,然后选择这个孩子的第一个孩子,在这种情况下是D。谢谢你的回答。我不知道为了用std::unique\u ptr
编写它,我应该修改什么?你能帮帮我吗?有没有办法避免把这些树顶起来,然后通过引用ins
?(至少这是我认为我在做的,但显然我做错了)@Mohammadreza,这是很多工作和解释。如果您能够自己管理,您将能够显著提高代码和对语言的一般理解。Evg如果有一种方法可以传递引用而不是覆盖树,并插入原始树而不是副本,该怎么办?谢谢您的回答。我将尝试使用unique\u ptr
并重写此代码,因为直接插入可能不是一个好主意,因为在这种情况下,我必须使用公共数据成员,这不是一个好主意