LeetCode 993. Cousins in Binary Tree

still an easy question.
cousins are in the same depth but with different parents.

now we are given a binary tree which each value is unique.
public boolean isCousins(TreeNode root, int x, int y)
let’s check if the given two values are cousin or not.

let’s do level order traverse and if these two values are are in the same level but not from the same parents, then they are cousins.

so we modify the level order a little bit:

class Solution {
    public boolean isCousins(TreeNode root, int x, int y) {
        
        if (root == null) return false;
        
        Queue<TreeNode> queue = new LinkedList<>();
        TreeNode cur = root;
        queue.offer(cur);
        while (!queue.isEmpty()) {
            int size = queue.size();
            HashSet<Integer> set = new HashSet<>(); 
            for (int i = 0; i < size; i++) {
                cur = queue.poll();
                set.add(cur.val);
                if (cur.left != null && cur.right != null) {
                    if ((cur.left.val == x && cur.right.val == y) || (cur.left.val == y && cur.right.val == x)) {
                    return false;
                    }
                }
                if (cur.left != null) queue.offer(cur.left);
                if (cur.right != null) queue.offer(cur.right);
            }
            if (set.contains(x) && set.contains(y)) {
                return true;
            }
        }
        return false;
        
    }
}
posted @ 2020-11-16 22:51  EvanMeetTheWorld  阅读(19)  评论(0)    收藏  举报