BST에서, 노드의 왼쪽에서 내림차순의 모든 값은 노드 자체보다 작거나 같습니다 (나중에 참조). 유사하게, 노드의 오른쪽에서 내림차순의 모든 값은 노드 값보다 크거나 같습니다 (a) .
일부 BST는 중복 값을 허용하도록 선택할 수 있으므로 위의 "또는 같음"한정자입니다.
다음 예는 명확 할 수 있습니다.
|
+--- 14 ---+
| |
+--- 13 +--- 22 ---+
| | |
1 16 +--- 29 ---+
| |
28 29
여기에는 중복을 허용하는 BST가 표시됩니다. 값을 찾으려면 루트 노드에서 시작하여 검색 값이 노드 값보다 작거나 큰지 여부에 따라 왼쪽 또는 오른쪽 하위 트리로 내려갑니다.
다음과 같은 방법으로 재귀 적으로 수행 할 수 있습니다.
def hasVal (node, srchval):
if node == NULL:
return false
if node.val == srchval:
return true
if node.val > srchval:
return hasVal (node.left, srchval)
return hasVal (node.right, srchval)
그리고 그것을 호출 :
foundIt = hasVal (rootNode, valToLookFor)
중복은 동일한 값을 가진 다른 노드에 대한 값을 찾은 후에 계속 검색해야 할 수 있으므로 약간 복잡합니다.
(a)는 당신이 할 수 소원을 제공, 그래서 당신은 당신이 특정 키를 검색하는 방법을 실제로 일종의 그 반대 방향을 조정해야합니다. BST는 오름차순이든 내림차순이든 상관없이 정렬 된 순서 만 유지하면됩니다.