【发布时间】:2018-10-28 21:30:41
【问题描述】:
这种迭代二叉树遍历不断给我分段错误错误,我不确定如何将树中当前变量的指针分配给从中弹出的元素,因为它们是 2 种不同的类型。
struct BTnode{
int data;
struct BTnode* left;
struct BTnode* right;
struct BTnode* parent;
};
typedef struct BTnode BTnode_t;
typedef struct {
LL_t* list;
} stack_t; //stack is created with a Linked List
void preOrderIter(BTnode_t* root)
{
stack_t* s = stack_create();
stack_push(s, root->data);
BTnode_t* current;
while (!stack_is_empty(s))
{
current = stack_pop(s);
printf("%d ", current->data);
if ( current->right != NULL)
stack_push(s, current->right->data);
if ( current->left != NULL)
stack_push(s, current->left->data);
}
free(s);
}
【问题讨论】:
-
BTnode_t和stack_t的定义是什么? -
BTnode_t 是二叉树结构,stack_t 是堆栈结构
-
这没有帮助。您可以将定义添加到您的问题中吗?例如
struct BTnode_t {...}; -
stack_push(s, root->data);在我看来很可疑。你弹出它,然后用数据尝试->...看起来你想要stack_push(s, root);,不是吗?如果这不是问题,请发布MCVE,以便我们实际运行您的代码并重现问题。谢谢你,欢迎来到 SO! -
错误发生在哪一行?如果您不确定使用调试器跟踪程序并查看它停止的位置。
标签: c tree binary iteration preorder