Lachlan Jacob 5 лет назад
Родитель
Сommit
542901dff8
3 измененных файлов: 86 добавлений и 0 удалений
  1. 52
    0
      problems/993/main.py
  2. 31
    0
      problems/993/problem.txt
  3. 3
    0
      problems/993/run.sh

+ 52
- 0
problems/993/main.py Просмотреть файл

@@ -0,0 +1,52 @@
# Definition for a binary tree node.
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right

class Solution:
def __init__(self):
self.xPar = None
self.xDepth = None
self.yPar = None
self.yDepth = None
def isCousins(self, root: TreeNode, x: int, y: int) -> bool:
# descend the binary tree and find the two values, set their parents
# exit and then compare
# because ints are unique and the nodes do exist there
# shouldn't be too many edge cases I don't think
self.descendTreeFinding(root, x, y, None, 0)
return self.xDepth == self.yDepth and self.xPar != self.yPar
def descendTreeFinding(self, tree, x, y, parent, depth):
if tree is None:
return
if tree.val == x:
self.xPar = parent
self.xDepth = depth
if tree.val == y:
self.yPar = parent
self.yDepth = depth
if self.yPar is not None and self.xPar is not None:
return
else:
self.descendTreeFinding(tree.left, x, y, tree.val, depth + 1)
self.descendTreeFinding(tree.right, x, y, tree.val, depth + 1)

s = Solution()
print("Expected: true")
tree = TreeNode(1)
left = TreeNode(2)
left.right = TreeNode(4)
tree.left = left
right = TreeNode(3)
right.right = TreeNode(5)
tree.right = right

print("Got:", s.isCousins(tree, 4, 5))

+ 31
- 0
problems/993/problem.txt Просмотреть файл

@@ -0,0 +1,31 @@
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


Note:

The number of nodes in the tree will be between 2 and 100.
Each node has a unique integer value from 1 to 100.

+ 3
- 0
problems/993/run.sh Просмотреть файл

@@ -0,0 +1,3 @@
#!/bin/bash

python3 main.py

Загрузка…
Отмена
Сохранить