题解 | #奶牛的居住区域#
奶牛的居住区域
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; } }
}