У меня есть древовидная структура, где каждый узел может иметь практически неограниченные дети, он моделирует комментарии для блога.Как найти глубину/уровень узла в небиновом дереве?
Я пытаюсь выяснить, учитывая идентификатор конкретного комментария, на какой глубине/уровне этот комментарий лежит в дереве.
Я следовал this guide that explains it for binary trees, но при адаптации его к недвоичным деревьям у меня проблемы.
Вот моя попытка до сих пор (в Swift):
func commentLevelRecursive(comment: Comment, commentID: String, currentLevel: Int) -> Int {
if comment.identifier == commentID {
return currentLevel
}
var newLevel = currentLevel
for reply in comment.replies {
newLevel = commentLevelRecursive(reply, commentID: commentID, currentLevel: currentLevel + 1)
}
return newLevel
}
Но это всегда казалось бы, возвращает 1. Я думаю, что это происходит потому, что newLevel всегда получает увеличилось с 0 до 1, то возвращается.
Может ли кто-нибудь дать мне некоторое представление о том, где я ошибаюсь?
newLevel = макс (newLevel, commentLevelRecursive (ответ, CommentID: CommentID, currentLevel: currentLevel + 1)) – Mark
@IonescuRobert Зачем использовать макс? Есть только одно вхождение узла с этим идентификатором. –
Да, но вы собираетесь пройти несколько ответов, поэтому вам нужна максимальная глубина от всех них. «newLevel» в этом случае будет для каждого уровня максимальной глубиной для его детей. Таким образом, вы будете иметь на первом узле максимальную глубину, если будете следовать этому правилу. – Mark