993. 二叉樹的堂兄弟節點 難度 簡單

在二叉樹中,根節點位於深度 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

 

提示:

  1. 二叉樹的節點數介於 2 到 100 之間。
  2. 每個節點的值都是唯一的、範圍爲 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
          

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章