首页 文章

查找树是否是二叉搜索树

提问于
浏览
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; 
}

1 回答

  • 10

    没有这个方法是错误的,因为它会为这个树返回一个真正的答案:

    6
        / \
       4   9
      / \
     2   10
    

    虽然它不是二叉搜索树!我建议一个更好的方法是采用inorder遍历并验证它是否实际排序 .

相关问题