【发布时间】:2012-07-29 06:41:17
【问题描述】:
a
/ \
a a
/ \ / \
a c a f
/ \ / \
b d e g
我有一棵看起来像上面的树,由链接结构表示:
class Node
{
Node* leftChild;
Node* rightChild;
char data;
}
class Tree
{
Node* root;
}
我的目标是找到从根到叶节点的所有路径。
我的树遍历算法是这样的:
void inorder()
{
in(root);
}
void in(CharNode* currentNode)
{
if(currentNode)
{
in(currentNode->leftChild);
cout << currentNode->data << endl;
in(currentNode->rightChild);
}
}
当我运行它时,我确信树正在构建,如图所示。我已经测试过了。但是,我无法弄清楚为什么我的树遍历分段错误。
我得到的输出是:
b
Segmentation fault.
我已经在高度较小的树上进行了测试,它确实有效。但由于某种原因,它不适用于高度大于 2 的树。我认为这棵树出了问题,我已经检查并打印了每个父母,左孩子和右孩子,他们打印出来如图所示.所以肯定是遍历算法。
【问题讨论】:
-
遍历算法对我来说看起来不错。发布一个可编译的示例,我相信很快就会发现错误。
-
什么是
CharNode?你确定你构建的树正确吗? -
@Donotalo,他确定,但我怀疑他错了。
-
将 null 赋值给
Node的构造函数中的指针。 -
好吧,我的代码有点复杂,我简化了很多例子,但是我可以发布一个可编译的版本。我认为没有人愿意阅读全部内容
标签: c++ data-structures tree binary-tree