こんにちは、私はバイナリツリーのための迅速なアルゴリズムを書いています。私の目標は、特定の深さでのノードのリストを作成するために、ここでスウィフトバイナリツリー指定された深さのノードのリスト
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ループの配列を使用すると、常に配列の先頭に親を挿入します。 –
もう少し詳細を教えていただけますか?私の深さ関数は特定の音符の深さを計算することのみです –
可能なすべてのノードのリストを1つの配列にまとめるか、この深さが実現できる複数の配列にリストしますか? –