我试图在二叉树中找到/打印每个节点的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
我已经测试了其余代码(构建树)并且它运行正常。
答案 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);
只要xptr
为null
,控件就会输入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);