993. Cousins in Binary Tree
In a binary tree, the root node is at depth 0
, and children of each depth k
node are at depth k+1
.
Two nodes of a binary tree are cousins if they have the same depth, but have different parents.
We are given the root
of a binary tree with unique values, and the values x
and y
of two different nodes in the tree.
Return true
if and only if the nodes corresponding to the values x
and y
are cousins.
Example 1:
Input: root = [1,2,3,4], x = 4, y = 3
Output: false
Example 2:
Input: root = [1,2,3,null,4,null,5], x = 5, y = 4
Output: true
Example 3:
Input: root = [1,2,3,null,4], x = 2, y = 3
Output: false
Constraints:
- The number of nodes in the tree will be between
2
and100
. - Each node has a unique integer value from
1
to100
.
# @lc code=start
using LeetCode
function is_cousins(root::TreeNode{Int}, x, y)
q = NTuple{2, Union{Nothing, TreeNode}}[]
push!(q, (root, nothing))
while !isempty(q)
n = length(q)
rec_parent = TreeNode{Int}[]
for i in 1:n
cur, par = popfirst!(q)
if cur.val == x || cur.val == y
push!(rec_parent, par)
end
isnothing(cur.left) || push!(q, (cur.left, cur))
isnothing(cur.right) || push!(q, (cur.right, cur))
end
length(rec_parent) == 0 && continue
length(rec_parent) == 1 && return false
length(rec_parent) == 2 && return rec_parent[1] != rec_parent[2]
end
end
# @lc code=end
is_cousins (generic function with 1 method)
This page was generated using DemoCards.jl and Literate.jl.