У меня есть следующая функция:
void treetraverse (tnode *node)
{
if (node == NULL)
{
return;
}
fprintf(stdout,"%d",node->val);
if (node-> d == 'L')
{
treetraverse(node->r);
treetraverse(node->l);
}
else
{
treetraverse(node->l);
treetraverse(node->r);
}
}
Где d - это направление, которое может быть «L» или «R». И node-> r и node-> l - это правый и левый дочерние узлы соответственно. Я пытаюсь удалить из этого хвостовую рекурсию, чтобы она была функционально эквивалентной - сейчас она делает два рекурсивных вызова функции, но я хочу, чтобы она сделала один. Как я могу переписать функцию так, чтобы она достигла этой цели? Спасибо.