我目前关于如何输出二叉树的实现在 g++ 中出现了一个错误,如下所示
Conditional jump or move depends on uninitialised value(s)
我目前的实现是:
void Foo::output(ostream &s, const Node *p)
{
if( p )
{
output( s , p -> left );
s << p -> info;
output( s , p -> right );
}
}
Node 是一个基本结构,具有左右指针和整数信息变量。
ostream 只是 cout
错误消息非常直接,它不喜欢我让它“跑掉”。
我的问题是双重的:
谢谢
最佳答案
基本上这意味着一些 节点 对象没有 左 和 右 初始化为空。
通常,像这样定义节点是个好主意
class Node
{
int info;
Node* left;
Node* right;
public:
Node( int infoin , Node* leftin = NULL , Node* rightin = NULL )
: info(infoin) , left(leftin) , right(rightin) {}
}
这样,如果在构建时左右节点不知道,它们将被设置为 null。
如果它们确实在 节点 的构建中已知,则您无需支付将 右 和 左 设置为 null 然后设置为其他内容的惩罚
关于c++ - 按升序递归输出二叉树,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8130785/