У мене є непряме дерево, вершини якого я хочу маркувати. Листові вузли повинні бути позначені одним. Потім, припустимо, листя видалили. На дереві, що залишилося, листя повинні бути позначені двома. Цей процес триває очевидним чином, поки всі вершини не мають мітки. Причиною цього я є те, що я хочу зберігати вершини в черзі і проходити через них "виходить першим". Чи є простий спосіб зробити це час?
Я можу вирішити проблему, роблячи BFS на кожному кроці. Але в гіршому випадку, на кожному кроці я проходжу кожну вершину, видаляю рівно два листки і заплітаю їх. Я вважаю, що це потребує квадратичного часу.
Іншою ідеєю було спочатку знайти все листя, а потім зробити BFS з кожного листа. Це не дає мені бажаного рішення. Наприклад, розглянемо такий собі "графік корони", як на малюнку нижче. Показано потрібне рішення, але запуск BFS з кожного аркуша призведе до лише двох використаних міток.
В ідеалі алгоритм лінійного часу також було б легко пояснити та реалізувати.