Вы не устанавливаете store->flag
для вновь вставленных узлов.Предположительно, он должен быть установлен на 1.
Вы также должны реструктурировать свой код, чтобы создание нового узла не дублировалось - самый простой способ сделать это с вашим текущим кодом - отделить это от новой функции:
struct treenode *new_node(struct treenode *parent, int number)
{
struct treenode *store = malloc(sizeof(struct treenode));
if (store) {
store->number = number;
store->left = store->right = NULL;
store->prev = parent;
store->flag = 1;
}
return store;
}
Тогда ваш код вставки просто становится:
if (currentNode->left)
insert_ord(number, currentNode->left);
else
currentNode->left = new_node(currentNode, number);
(и аналогично для правого узла).