我目前关于如何输出我的二叉树的实现让我在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
错误信息非常直接,它不喜欢我让它“跑掉”。
我的问题有两个:
由于
答案 0 :(得分:6)
基本上,这意味着某些 Node 对象没有左,右初始化为null。
通常,定义您的节点是个好主意
class Node
{
int info;
Node* left;
Node* right;
public:
Node( int infoin , Node* leftin = NULL , Node* rightin = NULL )
: info(infoin) , left(leftin) , right(rightin) {}
}
这样,如果在构造时不知道左右节点,则将它们设置为空。
如果他们确实知道构建节点,您不需要支付将正确和左设置为空的惩罚,然后别的什么