/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public boolean isCousins(TreeNode root, int x, int y) {
HashMap<Integer,Integer> depth= new HashMap<>();
HashMap<Integer,TreeNode> parent=new HashMap<>();
TreeNode pre=null;
dfs(root,depth,parent,pre);
return depth.get(x)==depth.get(y)&&parent.get(x)!=parent.get(y);
}
public void dfs(TreeNode root,HashMap<Integer,Integer> depth,HashMap<Integer,TreeNode> parent,TreeNode pre){
if(root!=null){
if(pre==null) {
depth.put(root.val,0);
}else{
depth.put(root.val,depth.get(pre.val)+1);
}
parent.put(root.val,pre);
dfs(root.left,depth,parent,root);
dfs(root.right,depth,parent,root);
}
}
}