二分木のポストオーダー トラバーサルを繰り返し出力するためのアルゴリズムを実装しました。ツリーのルートに到達したときに無限ループになることを除けば、アルゴリズム全体が機能します。
誰かが私を正しい方向に向けることができますか? 私はこの問題に2日間立ち往生しています。
void postorder_nonrec_2(treenode *root)
{
stack_t *s;
stack_init(&s, 100);
treenode *temp = root;
while(1)
{
while(root)
{
push(s, root);
root = root -> left;
}
if(stack_isEmpty(s))
break;
if(!top(s) -> right)
{
root = pop(s);
printf("%d ", root -> data);
if(root == top(s) -> left)
{
root = top(s) -> right;
}
else if(root == top(s) -> right)
{
printf("%d ", pop(s) -> data);
root = NULL;
}
}
else
{
root = top(s) -> right;
}
}
}