题目如下:
In a binary tree, the root node is at depth
0
, and children of each depthk
node are at depthk+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 valuesx
andy
of two different nodes in the tree.Return
true
if and only if the nodes corresponding to the valuesx
andy
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
Note:
- The number of nodes in the tree will be between
2
and100
.- Each node has a unique integer value from
1
to100
.
解题思路:遍历树,找到对应X和Y的节点,并记录其level和parent即可。
代码如下:
# 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): x_p = None y_p = None x_l = 0 y_l = 0 def recursive(self,node,level,parent,x,y): if node.val == x: self.x_p = parent self.x_l = level elif node.val == y: self.y_p = parent self.y_l = level if node.left != None: self.recursive(node.left,level+1,node,x,y) if node.right != None: self.recursive(node.right, level + 1, node, x, y) def isCousins(self, root, x, y): """ :type root: TreeNode :type x: int :type y: int :rtype: bool """ self.x_p = None self.y_p = None self.x_l = 0 self.y_l = 0 self.recursive(root,0,None,x,y) return self.x_p != self.y_p and self.x_l == self.y_l