题解 | #奶牛的居住区域#

奶牛的居住区域

https://www.nowcoder.com/practice/9265378f210b4ed5939424152f832221

虽然没有通过测试,但是我觉得这样写是对的,题目中并没有给节点颜色的信息,我自己加上了

enum Color {
    RED, BLACK
}

class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;
    Color color;
    
    TreeNode(int val, Color color) {
        this.val = val;
        this.color = color;
    }
}

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param root TreeNode类 
     * @return bool布尔型
     */
    public boolean cowLivingArea (TreeNode root) {
        // write code here
        if(root==null) return true;
        if(root.color!=Color.BLACK) return false;
        if(cheack(root)==-1) return false;
        return isBalance(root);
    }
    //判断红黑节点
    public int cheack(TreeNode root){
        if(root==null) return 1;
        int left=cheack(root.left);
        int right=cheack(root.right);
        if(left==-1||right==-1||left!=right) return -1;
        if(root.color==Color.RED){
            if(root.left!=null&&root.left.color==Color.RED||root.right!=null&&root.right.color==Color.RED){
                return -1;
            }
        }
        return root.color==Color.BLACK?left+1:left;
    }
    //判断高度
    public boolean isBalance(TreeNode root){
        if(root==null) return true;
        if(Math.abs(getlen(root.left)-getlen(root.right))>1)return false;
        else return isBalance(root.left)&&isBalance(root.right);
    }
    public int getlen(TreeNode root){
        if(root==null) return 0;
        return Math.max(getlen(root.left),getlen(root.right))+1;
    }
}

}

全部评论

相关推荐

头像
11-06 10:58
已编辑
门头沟学院 嵌入式工程师
双非25想找富婆不想打工:哦,这该死的伦敦腔,我敢打赌,你简直是个天才,如果我有offer的话,我一定用offer狠狠的打在你的脸上
点赞 评论 收藏
分享
牛客279957775号:铁暗恋
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务