From 54555318f2537154204b77e3582015d9d81c9ed4 Mon Sep 17 00:00:00 2001 From: Won Joon Thomas Choi <113500771+724thomas@users.noreply.github.com> Date: Thu, 22 Oct 2026 22:41:31 +0900 Subject: [PATCH 1/2] Create 1145. Binary Tree Coloring Game.py --- .../1145. Binary Tree Coloring Game.py" | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 "leetcode3/\354\265\234\354\233\220\354\244\200/1145. Binary Tree Coloring Game.py" diff --git "a/leetcode3/\354\265\234\354\233\220\354\244\200/1145. Binary Tree Coloring Game.py" "b/leetcode3/\354\265\234\354\233\220\354\244\200/1145. Binary Tree Coloring Game.py" new file mode 100644 index 00000000..d90bf81a --- /dev/null +++ "b/leetcode3/\354\265\234\354\233\220\354\244\200/1145. Binary Tree Coloring Game.py" @@ -0,0 +1,71 @@ +# + +''' +1. 아이디어 : +x 노드의 위치, x노드 위의 노드들의 합, x노드 왼쪽, 오른쪽 자식 노드들의 합을 비교합니다 + +2. 시간복잡도 : + O(n) + +3. 자료구조/알고리즘 : +bfs + +''' + +# 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 btreeGameWinningMove(self, root: TreeNode | None, n: int, x: int) -> bool: + + + def get_node_and_par_total(node: TreeNode): + if node.val == x: + return node, 0 + + par_total = 0 + x_node = None + + queue = deque() + queue.append(node) + + while queue: + par = queue.popleft() + if par == None: continue + + if par.val == x: + x_node = par + else: + par_total += 1 + queue.append(par.left) + queue.append(par.right) + + return x_node, par_total + + def get_child_value(node: TreeNode): + total = 0 + if not node: + return total + + queue = deque() + queue.append(node) + + while queue: + child = queue.popleft() + if not child: continue + + total += 1 + queue.append(child.left) + queue.append(child.right) + return total + + x_node, par_total = get_node_and_par_total(root) + left_total = get_child_value(x_node.left) + right_total = get_child_value(x_node.right) + + return par_total > n - par_total or left_total > n - left_total or right_total > n - right_total + + From 564b7fb00b4da76005df055eb1a8cdcb7e858236 Mon Sep 17 00:00:00 2001 From: Won Joon Thomas Choi <113500771+724thomas@users.noreply.github.com> Date: Thu, 22 Oct 2026 22:41:44 +0900 Subject: [PATCH 2/2] Create 572. Subtree of Another Tree.py --- .../572. Subtree of Another Tree.py" | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 "leetcode3/\354\265\234\354\233\220\354\244\200/572. Subtree of Another Tree.py" diff --git "a/leetcode3/\354\265\234\354\233\220\354\244\200/572. Subtree of Another Tree.py" "b/leetcode3/\354\265\234\354\233\220\354\244\200/572. Subtree of Another Tree.py" new file mode 100644 index 00000000..a620e1c3 --- /dev/null +++ "b/leetcode3/\354\265\234\354\233\220\354\244\200/572. Subtree of Another Tree.py" @@ -0,0 +1,53 @@ +# 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 isSubtree(self, root: TreeNode | None, subRoot: TreeNode | None) -> bool: + + def get_num_list(node: TreeNode): + num_list = [] + + queue = deque() + queue.append(node) + + while queue: + curr = queue.popleft() + if not curr: + continue + + num_list.append(curr.val) + queue.append(curr.left) + queue.append(curr.right) + return num_list + + queue = deque() + queue.append(root) + root_start_nodes = [] + + while queue: + curr = queue.popleft() + if not curr: continue + if curr.val == subRoot.val: + root_start_nodes.append(curr) + queue.append(curr.left) + queue.append(curr.right) + + root_list = get_num_list(root_start_node) + sub_root_lists = [] + for nodes in root_start_nodes: + sub_root_lists.append(get_num_list(subRoot)) + + ans = False + for sub_root_list in sub_root_lists: + if len(root_list) != len(sub_root_list): + continue + for i in range(len(root_list)): + if root_list[i] != sub_root_list[i]: + break + + + return ans +