leetcode 333. Largest BST Subtree

来源:互联网 发布:程序员为什么容易猝死 编辑:程序博客网 时间:2024/05/20 05:58

leetcode 333. Largest BST Subtree


/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */class Solution {    public int largestBSTSubtree(TreeNode root) {        if(root==null) return 0;        if(root.left==null&&root.right==null) return 1;        if(isValid(root, null, null)) return countNode(root);        return Math.max(largestBSTSubtree(root.left),largestBSTSubtree(root.right));    }        private boolean isValid(TreeNode root, Integer min, Integer max){        if(root==null) return true;        if(min!=null&&min>=root.val) return false;        if(max!=null&&max<=root.val) return false;        return isValid(root.left, min, root.val)&&isValid(root.right,root.val,max);    }        private int countNode(TreeNode root){        if(root==null) return 0;        if(root.left==null&&root.right==null) return 1;        return 1 + countNode(root.left) + countNode(root.right);    }}


原创粉丝点击