Привет Я пишу быстрый алгоритм для двоичного дерева. Моя цель состоит в том, чтобы создать список узлов на определенной глубине что-то вродеБыстрое двоичное дерево списка узлов на заданной глубине
func listNodeAt(_n: Int) --> [T] {
}
Вот мое дерево класс
public class BinaryTreeNode<T:Comparable> {
//Value and children vars
public var value:T
public var leftChild:BinaryTreeNode?
public var rightChild:BinaryTreeNode?
public weak var parent:BinaryTreeNode?
//Initialization
public convenience init(value: T) {
self.init(value: value, left: nil, right: nil, parent:nil)
}
public init(value:T, left:BinaryTreeNode?, right:BinaryTreeNode?, parent:BinaryTreeNode?) {
self.value = value
self.leftChild = left
self.rightChild = right
self.parent = parent
}
}
У меня есть построить вспомогательную функцию, чтобы рассчитать глубину Узла
//Depth
public func depth() -> Int {
guard var node = parent else {
return 0
}
var depth = 1
while let parent = node.parent {
depth = depth + 1
node = parent
}
return depth
}
Как мы можем достичь функции желания? Любое предложение очень ценит. Благодаря!
Итак, используйте тот же алгоритм поиска глубины дерева. Использование массива в цикле while всегда вставляет родительский элемент в начале массива. –
Спасибо, что вы можете дать немного подробнее? Моя функция глубины предназначена только для вычисления глубины конкретной заметки. –
Вы хотите перечислить весь возможный список узлов в один массив или несколько массивов, где эта глубина может быть достигнута. –