【发布时间】:2021-07-20 08:33:39
【问题描述】:
[1, null, 1] 和 [1, 1] 可能的二叉搜索树是什么?会有什么不同吗?
我的代码验证 [1, 1] 为 BST 但不是 [1, null, 1],我不明白为什么...
bool isBST(TreeNode* root, int max, int min){
if(!root)
return true;
if((max!= NULL && max<=root->val) || (min!= NULL && min>root->val))
return false;
if(!isBST(root->left, root->val, min) || !isBST(root->right, max, root->val))
return false;
return true;
}
bool isValidBST(TreeNode* root) {
int min =NULL, max = NULL;
return isBST(root, NULL, NULL);
}
为什么我的代码对于 [1, null, 1] 没有返回 true?
【问题讨论】:
-
if((max!= NULL && max<=root->val) -
[1,null,1]到底是什么意思?除了它不是树这一事实之外,您似乎还将整数与指针混淆了。请出示minimal reproducible example。 -
@wildplasser 旁白:“这里将整数与指针(常量)进行比较。” --> 也许。
NULL可能是某种整数类型的 0。仍然看起来错了。 -
还是废话。类型确实存在。比较不同类型的值可能并不总是有意义。 (恕我直言:从不,除非是可取的)
标签: c binary-tree binary-search-tree