У меня чертовски время, пытаясь понять это. Всюду, где я смотрю, я, кажется, только натолкнулся на объяснения того, как фактически переходить через список нерекурсивно (часть, которую я действительно понимаю). Может ли кто-нибудь там забивать, как именно я могу сначала пройти список и найти фактические узлы-предшественники/преемники, чтобы я мог их отмечать в классе узлов? Мне нужно создать простое двоичное дерево поиска и просмотреть список и перенаправить нулевые ссылки на предшественника/преемника. У меня было немного удачи с раствором несколько, как следующее:Прямая нарезка двоичного дерева
thread(node n, node p) {
if (n.left !=null)
thread (n.left, n);
if (n.right !=null) {
thread (n.right, p);
}
n.right = p;
}
найти узлы-предшественники/преемники? это то же самое, что и родители и дети? Почему вы создаете дерево с дырками? – nlucaroni
Чтобы уточнить для кого-либо еще, что не полностью понял ваш вопрос, я предполагаю, что вы пытаетесь связать каждый узел двоичного дерева с его предшественником и преемником в порядке (как описано здесь: http: //en.wikipedia. org/wiki/Threaded_binary_tree), правильно? – Suppressingfire