[英]To find if a tree is a binary search tree or not
这种方法是否错误,以确定树是否是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;
}
没有这个方法是错误的,因为它会为这个树返回一个真正的答案:
6
/ \
4 9
/ \
2 10
虽然它不是二叉搜索树! 我建议一个更好的方法是采用inorder遍历并验证它是否实际排序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.