以递增顺序递归输出二叉树

时间:2011-11-15 02:26:49

标签: c++ recursion binary-tree

我目前关于如何输出我的二叉树的实现让我在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

错误信息非常直接,它不喜欢我让它“跑掉”。

我的问题有两个:

  1. 为什么这不合适?什么都没有改变,我不知道它会伤害什么。
  2. 这样做的正确方法是什么?
  3. 由于

1 个答案:

答案 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) {}

}

这样,如果在构造时不知道左右节点,则将它们设置为空。

如果他们确实知道构建节点,您不需要支付将正确设置为空的惩罚,然后别的什么