代码中的分段错误,用于查找(顺序)二叉树中节点的后继

时间:2015-08-19 08:19:39

标签: c segmentation-fault binary-tree

我试图在二叉树中找到/打印每个节点的inorder后继,但编译器正在给我分段错误作为结果。

结构如下: -

set(i for i in a if a.count(i)>1)

初始条件:

  

我已将树的根目录作为struct node { int x; struct node *left; struct node *right; }; a)和succ()指针传递给NULL

这是我打印/寻找后继者的代码:

b

我已经测试了其余代码(构建树)并且它运行正常。

1 个答案:

答案 0 :(得分:4)

请考虑以下代码段:

if(xptr!=NULL)          
    {                               
        printf(" %d is the successor of %d\n",a->x,xptr->x);
    }
else                            
        printf("%d is the scuccessor of no one\n",xptr->x);

只要xptrnull,控件就会输入else部分然后尝试打印xptr->x 取消引用空指针null->x)。因此分割错误。

我认为你错误地写了这个:

printf("%d is the successor of no one\n",xptr->x);

我认为应该是:

printf("%d is the successor of no one\n",a->x);