題目描述
在二叉樹中,根節點位於深度 0 處,每個深度爲 k 的節點的子節點位於深度 k+1 處。
如果二叉樹的兩個節點深度相同,但父節點不同,則它們是一對堂兄弟節點。
我們給出了具有唯一值的二叉樹的根節點 root,以及樹中兩個不同節點的值 x 和 y。
只有與值 x 和 y 對應的節點是堂兄弟節點時,才返回 true。否則,返回 false。
算法思路
深度相同:廣度優先搜索
父節點不同:編號
class Solution:
def isCousins(self, root: TreeNode, x: int, y: int) -> bool:
ls=[root]
while ls:
k={}
v=0
for i in range(len(ls)):
r=ls.pop(0)
if r.left:
ls.append(r.left)
k[r.left.val]=v
v+=1
if r.right:
ls.append(r.right)
k[r.right.val]=v
v+=1
if x in k and y in k:
if k[x]%2 and k[x]-k[y]!=1:
return True
elif k[y]%2 and k[y]-k[x]!=1:
return True
elif abs(k[y]-k[x])>1:
return True
return False
執行用時 :44 ms, 在所有 Python3 提交中擊敗了48.97%的用戶
內存消耗 :13.6 MB, 在所有 Python3 提交中擊敗了100.00%的用戶