【发布时间】:2018-08-07 16:33:00
【问题描述】:
我知道我不应该在这里问这些类型的问题,但我被卡住了,无法弄清楚问题所在。所以, 我编写了这段代码,它将树的根作为输入,并检查给定的树是否是 BST。但是我没有通过几个测试用例,我不明白为什么?如果有人能告诉我我的代码有什么问题,那将不胜感激。 这是问题Is This a Binary Search Tree?的链接
这里是代码。
bool checkBST(Node* root) {
if(root == NULL)
return false;
int d = root->data;
bool r1 = true,r2=true;
if(root->left != NULL){
if(d < root->left->data)
r1 = false;
else
r1 = checkBST(root->left);
}
if(root->right != NULL){
if(d > root->right->data)
r2 = false;
else
r2 = checkBST(root->right);
}
return r1 && r2;
}
【问题讨论】:
-
测试用例是你的还是你自己写过测试用例?您是否使用调试器逐步完成了有趣的测试用例?
-
一棵空树可能是一个有效的 BST。
-
这是什么:
r1*r2使用二元运算符。r1 && r2 -
另外,请使用 AND (
&&) 而不是布尔值相乘... -
另外
r1 = false;在右边检查应该是r2 = false;。
标签: c++ algorithm tree binary-search-tree