0
여기에 답변이 많지만 스위프트 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 : node.leftChild에 대해 nil coalescing을 수행합니까? 무? 어떤 도움을 주시면 감사하겠습니다.
확실히 노드가 nil이면 false를 반환하겠습니까? – Fogmeister
그런 다음 validNode()는 항상 false를 반환합니다. 결국 잎 노드에 도달하고 반환 된 false가 전파됩니다. – Spads
예. 네가 옳아. 내 나쁜 – Fogmeister