vc wrote:1. The structure Node( Next, Child, Parent, Key) clearly represents an _ordered_ tree node but it's not clear what's considered to be the parent;
Насколько я помню из разных давних примеров подобных структур, смысл parent совершенно ясен, и никаких сомнений вызывать не должен бы: это именно общий "предок" всех "братьев", связанных между собой в цепочку next. Разные прадлагавшиеся здесь альтернативы никогда раньше не рассматривались в значении parent. Если бы parent указывал на "предыдущего брата", то он назывался бы previous. Также делать parent=NULL для "промежуточных братьев", кроме последнего в списке next, тоже неправильно - это лишает ссылку parent ее первоначального смысла. И т.д. В общем - parent есть parent, и он самообъясняющий.
Также непонятен смысл поворота дискуссии от основного вопроса. Были даны начальные условия задачи, - как они есть. И предложено найти оптимальный способ обхода дерева - именно при тех условиях, как они заданы. В качестве скорее подсказки также дано требование не использовать рекурсию, хотя в такой ситуации этого можно было не требовать, а ожидать что в качестве предпочтительного решения будет предложен именно обход без рекурсии, поскольку все промежуточные данные, для сохранения которых обычно и требуется либо рекурсия, либо стек данных, в данной конкретной ситуации уже заложены в исходную структуру (хорошо это, или плохо - другой вопрос, но главное - они там уже есть).
Этот вопрос я так и понимал, как желание увидеть, кто из решающих заметит достаточность исходных данных для решения задачи без создания (явно либо неявно) промежуточных структур, которые получаются при заученных способах решения этой в общем стандартной задачи. Это - полная копия той шутки: Как вскипятить чайник наполненный водой, который находится рядом со включенной газовой плитой? Программист предлагал (1) вылить воду, (2) погасить плиту, (3) сделать кипячение так, как делал вчера.
Разве не похожие способы были предложены для обхода дерева, в котором уже заданы parents: (1) игнорировать parents, (2) рекомендовать руководству никогда не вносить лишних ссылок в их данные, (3) создать свой стек из тех же самых значений parents, и обходить дерево так, как на днях делали в другой конторе.
Разве не похожая ситуация?
* * *
И совсем непонятное замечание было про отказ от работы там, где задали бы "такой глупый вопрос". Конечно, в качестве реального вопроса для интервью, этот вопрос - не лучший кандидат. Но в похожей ситуации лично я бы взял на работу кандидата, который для простой задачи предложит именно простое решение, а не более сложное, но: (1) стандартное, или (2) модное, или (3) использующее новейшие технологии, или (4) названное именем известного изобретателя, или же вообще вместо конкретного решения конкретной задачи начнет предлагать выбросить все что есть, и переделать с самого начала.