在二叉樹中,根節點位於深度 0
處,每個深度爲 k
的節點的子節點位於深度 k+1
處。
如果二叉樹的兩個節點深度相同,但父節點不同,則它們是一對堂兄弟節點。
我們給出了具有唯一值的二叉樹的根節點 root
,以及樹中兩個不同節點的值 x
和 y
。
只有與值 x
和 y
對應的節點是堂兄弟節點時,才返回 true
。否則,返回 false
。
示例 1:
輸入:root = [1,2,3,4], x = 4, y = 3 輸出:false
示例 2:
輸入:root = [1,2,3,null,4,null,5], x = 5, y = 4 輸出:true
示例 3:
輸入:root = [1,2,3,null,4], x = 2, y = 3 輸出:false
提示:
- 二叉樹的節點數介於
2
到100
之間。 - 每個節點的值都是唯一的、範圍爲
1
到100
的整數。
思路:基本的層次遍歷
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def isCousins(self, root, x, y):
"""
:type root: TreeNode
:type x: int
:type y: int
:rtype: bool
"""
if x==root.val or y==root.val:
return False
tmp = [root]
while tmp:
l = []
xflag = False
yflag = False
vals = []
for i in tmp:
if i.left and i.right:
if x in [i.left.val, i.right.val] and y in [i.left.val, i.right.val]:
return False
if i.left:
l.append(i.left)
if i.right:
l.append(i.right)
if i.val == x:
if yflag == True:
return True
else:
xflag = True
if i.val == y:
if xflag == True:
return True
else:
yflag = True
tmp = l
return False