3
트리가 BST인지 여부를 알아내는 데이 방법이 잘못 되었습니까? 노드의 왼쪽 하위 트리에는 노드의 키보다 키가 작은 노드 만 포함됩니다. 노드의 오른쪽 하위 트리에는 노드의 키보다 큰 키가있는 노드 만 들어 있습니다. 왼쪽 및 오른쪽 하위 트리는 모두 이진 검색 트리 여야합니다. 내 코드는 다음과 같습니다트리가 이진 검색 트리인지 확인하려면
isBST(struct node* node)
{
if (node == NULL)
return 1;
if (node->left != NULL && node->left->data > node->data)
return 0;
if (node->right != NULL && node->right->data < node->data)
return 0;
if (!isBST(node->left) || !isBST(node->right))
return 0;
return 1;
}
코드가 올바르지 않지만 (답을 참조하십시오), 동일한 노드를 원하는 위치에 따라 수표 중 하나 (=> 또는 <=)에 등호를 포함해야한다는 것을 기억해야합니다. – Dukeling
[이진 검색 트리를 어떻게 검증합니까?] (http://stackoverflow.com/questions/499995/how-do-you-validate-a-binary-search-tree)의 가능한 중복 – Dukeling