0
これはここにたくさんの回答がありますが、私が書いたものをチェックするためにSwift 3+で見つけられませんでした。私は子ノードをアンラップ力で問題に遭遇するつもりだった知っていた - 以下のコードを参照してください。バイナリツリーが検索可能かどうかを確認してください
func isBST(_ node:Tree) -> Bool {
return validNode(node:node, minValue:INT8_MIN, maxValue:INT8_MAX)
}
func validNode(node: Tree, minValue:Int32, maxValue:Int32) -> Bool {
return node.value > minValue && node.value < maxValue && validNode(node:node.leftChild!, minValue: minValue, maxValue: Int32(node.value)) && validNode(node:node.rightChild!, minValue: Int32(node.value), maxValue: maxValue)
}
結局、私は葉をヒットすると、ノードがnilになります。しかし、(私は自分自身を教えているので、スイフトは私と一緒にいてください)これを回避する方法がわかりません。私はノードnode:node.leftChildに対してnil coalescingを入れますか?なし?どんな助けもありがとう。
ノードがnilの場合は、確かにfalseを返しますか? – Fogmeister
次にvalidNode()は常にfalseを返します。最終的にリーフノードに到達し、返されたfalseが伝播します。 – Spads
あなたが正しい。私の悪い – Fogmeister