From 8361e8fed69c0efe22cf012f5067813872ad73fb Mon Sep 17 00:00:00 2001 From: bumpsoo Date: Sat, 22 Feb 2025 02:21:36 +0900 Subject: [PATCH] https://leetcode.com/problems/find-elements-in-a-contaminated-binary-tree --- ..._elements_in_a_contaminated_binary_tree.py | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 medium/find_elements_in_a_contaminated_binary_tree.py diff --git a/medium/find_elements_in_a_contaminated_binary_tree.py b/medium/find_elements_in_a_contaminated_binary_tree.py new file mode 100644 index 0000000..e9e2d85 --- /dev/null +++ b/medium/find_elements_in_a_contaminated_binary_tree.py @@ -0,0 +1,32 @@ +# https://leetcode.com/problems/find-elements-in-a-contaminated-binary-tree + +from typing import Optional, Set + +class TreeNode: + def __init__(self, val=0, left=None, right=None): + self.val = val + self.left = left + self.right = right + +class FindElements: + r: Optional[TreeNode] + s: Set[int] + + def __init__(self, root: Optional[TreeNode]): + self.r = root + self.s = set() + if self.r is not None: + self.s.add(0) + self.recurse_init(self.r, 0) + + def recurse_init(self, curr: TreeNode, curr_val: int): + if curr.left is not None: + self.s.add(curr_val * 2 + 1) + self.recurse_init(curr.left, curr_val * 2 + 1) + if curr.right is not None: + self.s.add(curr_val * 2 + 2) + self.recurse_init(curr.right, curr_val * 2 + 2) + + def find(self, target: int) -> bool: + return target in self.s +