注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号
x
在做Validate Binary Search Tree那道题时,很多都用以下这段程序:
public boolean isValidBST(TreeNode root) {
ArrayList<Integer> pre = new ArrayList<Integer>();
pre.add(null);
return helper(root, pre);
}
private boolean helper(TreeNode root, ArrayList<Integer> pre)
{
if(root == null)
return true;
boolean left = helper(root.left,pre);
if(pre.get(pre.size()-1)!=null && root.val<=pre.get(pre.size()-1))
return false;
pre.add(root.val);
boolean right = helper(root.right,pre);
return left && right;
}
我习惯用void helper,所以改了一下:
public boolean isValidBST(TreeNode root) {
List<Integer> pre = new ArrayList<Integer>();
pre.add(null);
boolean[] result = new boolean[1];
helper(root, result, pre);
return result[0];
}
private void helper(TreeNode root, boolean[] result, List<Integer> pre) {
if (root == null) {
result[0] = true;
return;
}
helper(root.left, result, pre);
if(pre.get(pre.size()-1)!=null && root.val<=pre.get(pre.size()-1)){
result[0]=false;
return;
}
pre.add(root.val);
helper(root.right, result, pre);
if(result[0]==false){
result[0]=true;
return;
}
}
但是输出结果总是不对,不知道哪里弄错了?谢谢 |