Swift バイナリツリー②
前回のバイナリツリーに挿入する,検索する関数
//挿入
public func insert(value: T) {
//小さければ左に行く
if value < self.value {
//if let構文
if let left = left {
left.insert(value: value)
} else {
//値がなければノードを作成し、親ノードを設定する
left = BinarySearchTree(value: value)
left?.parent = self
}
//右に行く場合
} else {
//if let 構文
if let right = right {
right.insert(value: value)
} else {
//値がなければノードを作成し、親ノードを設定する
right = BinarySearchTree(value: value)
right?.parent = self
}
}
}
//検索
public func search(value: T) -> BinarySearchTree? {
//左をサーチする再帰処理
if value < self.value {
return left?.search(value)
} else if value > self.value {
//右をサーチする再帰処理
return right?.search(value)
} else {
return self //発見!
}
}