这种方法是否错误,以确定树是否是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;
}
1 回答
没有这个方法是错误的,因为它会为这个树返回一个真正的答案:
虽然它不是二叉搜索树!我建议一个更好的方法是采用inorder遍历并验证它是否实际排序 .