use*_*235 5 java algorithm data-structures
下面的代码来自查找二进制树是否为二进制搜索树.
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;
}
Run Code Online (Sandbox Code Playgroud)
如何MIN和MAX在这里被使用?它们代表什么价值?为什么他们需要通过该功能?
[MIN,MAX]表示当前节点中的有效值可以是的范围.对于第一个节点,这将是INT_MIN和INT_MAX,因为它可以具有任意值,但是对于它的子节点,我们需要检查BST属性 - 所有左边的子节点不应该大于当前节点,所有正确的节点不应该小于.这就是我们为它们更改MIN和MAX值的原因.
注意:如果在树中您可以拥有重复值,请将检查更改为:
if(node.element >= MIN
&& node.element <= MAX
&& IsValidBST(node.left,MIN,node.element)
&& IsValidBST(node.right,node.element,MAX))
Run Code Online (Sandbox Code Playgroud)
或者你会得到无效的结果.
| 归档时间: |
|
| 查看次数: |
2498 次 |
| 最近记录: |