我试图检查一个给定的二叉树是否是二叉查找树。我要做的是对二叉树进行有序遍历,并将当前元素与前一个元素进行比较。如果当前元素更大,我们继续进一步检查,否则给定的树是无效的。
int prev=0;
public int isValidBST(TreeNode A) {
if(A==null)
return 1;
isValidBST(A.left);
// System.out.println("val "+A.val);
if(A.val<=prev)
return 0;
// else if(A!=null){
prev=A.val;
//System.out.println("prev "+prev);
isValidBST(A.right);
if(isValidBST(A.right)==1&&isValidBST(A.left)==1)
return 1;
return 0;
}
这是我写的代码。我到底做错了什么?
> < li >建议:您可以让您的方法返回boolean而不是int。 < li >此外,我更喜欢使用空节点而不是变量。通过这种方式,你可以让你的树存储除整数以外的值(只需要改变比较逻辑)。 < li>
如果您希望树也具有非唯一值,则可以从< code>node.data中删除等号
TreeNode prev=null;
public boolean isValidBST(TreeNode node)
{
//null is a valid bst
if(node==null){
return true;
}
// traverse the tree in inorder fashion and
// keep a track of previous node
if (!isValidBST(node.left)){
return false;
}
// compare current data with previous one
if (prev != null && node.data <= prev.data){
return false;
}
prev = node;
//check right subtree
return isValidBST(node.right);
}
每个子树只有一个递归调用!使用布尔值!
int prev=0;
public boolean isValidBST(TreeNode A) {
if( A == null ) return true;
if( ! isValidBST(A.left) ) return false;
if( A.val <= prev ) return false;
prev = A.val;
if( ! isValidBST(A.right) ) return false;
return true;
}
问题内容: 我有一个小程序,允许用户输入一些正则表达式。之后,我想检查此输入是否为 有效的 正则表达式。 我想知道Java中是否有内置方法,但是找不到这种喷射器。 你能给我一些建议吗? 问题答案: 这是一个例子。 然后输出,例如。
检查给定的IBAN地址是否有效。注意,IBAN对象也有此方法。 调用: web3.eth.Iban.isValid(address) 参数: address:String,要检查的IBAN地址 返回值: Boolean:有效的地址则返回true,否则返回false 示例代码: web3.eth.Iban.isValid("XE81ETHXREGGAVOFYORK"); > true web3.
问题内容: 如何在Java中验证JSON字符串?还是可以使用正则表达式解析它? 问题答案: 一个疯狂的主意,尝试解析它并捕获异常: 该代码使用org.json JSON API实现,该实现在github,maven和部分Android上可用。
问题内容: 我的webapp允许用户上传jar文件。但是,将jar文件上传后,它已损坏。我已经通过比较md5校验和(winmd5free)对此进行了验证。 上传的jar文件看起来“正常”和“正确” 与原始文件相比,文件大小看起来不错(在KB级别) 我可以使用7z打开上载的jar文件并查看其内容(资源和类文件),并且与原始文件相比,一切都相同 当我打开上载的jar文件(使用Notepad ++)时,
检查指定的字符串是否是有效的以太坊地址。如果地址同时使用了大小写字符, web3.utils.isAddress()方法也会检查校验和。 调用: web3.utils.isAddress(address) 参数: address - String: 要检查的地址字符串 返回值: Boolean:有效地址则返回true,否则返回false 示例代码: web3.utils.isAddress('0
我正在和一个班合作。我正在使用一些方法。 我需要检查我需要传递的参数,来调用这个方法。我就是这样做的 它工作得很好,但我知道有些方法有重载(没有参数),但这段代码只显示最后声明的方法(有参数要调用)。我怎样才能同时得到这两个重载? 这就是它的样子(我知道这个方法有重载) 例如另一个类:类扫描比打印方法方法 要扫描的代码 类的构造函数,它扫描给定的对象。 这就是我打印它们的方式。