LeetCode - Validate Binary Search Tree



問題の説明


二元検索ツリー.
一致しているかどうかをチェックします.

トラブルシューティング方法


うん.lower、upperで解決すればいいと思っていたので、RecursionかQで解決すればいいと思います.
ええ、でも、ちょっとテストボックスが古いです.
わざと範囲をIntegerに設定します.MIN_VALUE, Integer.MAX VALUEを加えて、2行で解決できるコードを4行にします.

ソースコード

import java.util.*;
class Solution {
    public boolean isValidBST(TreeNode root) {
        
        return isValidCheck(root,null,null);
    }
    
    public boolean isValidCheck(TreeNode root, Integer lower, Integer upper){
        if(root==null) return true;
        if(root.left!=null&&root.left.val>=root.val) return false;
        if(root.left!=null&&lower!=null&&root.left.val<=lower) return false;
        if(root.right!=null&&root.right.val<=root.val) return false;
        if(root.right!=null&&upper!=null&&root.right.val>=upper) return false;
        return isValidCheck(root.left,lower,root.val) && isValidCheck(root.right,root.val,upper);
        
    }
}

結果



そうですね.