Jos*_*hua 4 c++ recursion binary-tree
我目前关于如何输出我的二叉树的实现让我在g ++中遇到错误
Conditional jump or move depends on uninitialised value(s)
Run Code Online (Sandbox Code Playgroud)
我目前的实施是:
void Foo::output(ostream &s, const Node *p)
{
if( p )
{
output( s , p -> left );
s << p -> info;
output( s , p -> right );
}
}
Run Code Online (Sandbox Code Playgroud)
Node是一个基本结构,带有左右指针和一个整数信息变量.
ostream只是cout
错误信息是非常直接的,它不喜欢我让它"跑掉".
我的问题是双重的:
谢谢
基本上这意味着一些节点对象没有左和右初始化为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) {}
}
Run Code Online (Sandbox Code Playgroud)
这样,如果在构造时不知道左右节点,则将它们设置为null.
如果他们确实在Node的构造中已知,那么你不需要支付将right和left设置为null然后再设置为其他内容的惩罚