Этот итеративный обход бинарного дерева продолжает выдавать мне ошибки ошибки сегментации, я не уверен, как назначить указатель для текущей переменной в дереве извлеченному из него элементу, поскольку они имеют 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
? - person Fiddling Bits   schedule 29.10.2018struct BTnode_t {...};
- person Fiddling Bits   schedule 29.10.2018stack_push(s, root->data);
выглядит подозрительно для меня. Вы открываете его, а затем пытаетесь->
с данными... Похоже, вам нужноstack_push(s, root);
, не так ли? Если это не проблема, опубликуйте MCVE, чтобы мы могли запустить ваш код и воспроизвести проблему. Спасибо и добро пожаловать в SO! - person ggorlen   schedule 29.10.2018