java检查二叉树是否为有效BST的函数中的“min”和“max”是什么?
下面的代码来自Finding if a Binary Tree is a Binary Search Tree
bool IsValidBST(BinaryNode node, int MIN, int MAX)
{
if(node == null)
return true;
if(node.element > MIN
&& node.element < MAX
&& IsValidBST(node.left,MIN,node.element)
&& IsValidBST(node.right,node.element,MAX))
return true;
else
return false;
}
这里如何使用MIN
和MAX
?它们代表什么价值观?为什么它们需要通过函数传递
# 1 楼答案
它们必须通过函数来传递,以便递归地调用它,并增加缩小范围,就像这里一样
当然,对于第一个调用,您可以从树中确定最小值和最大值,但对于后续调用,您必须这样传递
# 2 楼答案
您应该如下调用函数。其中INT_MIN和INT_MAX是常数定义的
但这种方法并不适用于所有数据。意思是,我们不知道最小值和最大值的数据,比如字符串或任意用户定义的类型
要确定给定的BT是否是任何数据类型的BST,需要使用以下方法。 1.使用顺序遍历调用递归函数,直到叶节点结束 2.自己建立自己的最小值和最大值
前提是,树元素必须定义小于/大于运算符