Skip to content

Commit 9051a5d

Browse files
committed
resolve lc 652
1 parent 289edd9 commit 9051a5d

File tree

2 files changed

+26
-0
lines changed
  • leetcode/652-find-duplicate-subtrees

2 files changed

+26
-0
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Definition for a binary tree node.
2+
# class TreeNode:
3+
# def __init__(self, val=0, left=None, right=None):
4+
# self.val = val
5+
# self.left = left
6+
# self.right = right
7+
8+
9+
class Solution:
10+
def findDuplicateSubtrees(self, root: TreeNode) -> List[TreeNode]:
11+
self.subtrees = set()
12+
self.known_duplicates = set()
13+
self.duplicate_nodes = set()
14+
15+
def dfs(node):
16+
if not node:
17+
return ""
18+
sig = f"{node.val},{dfs(node.left)},{dfs(node.right)}"
19+
if sig not in self.subtrees:
20+
self.subtrees.add(sig)
21+
elif sig not in self.known_duplicates:
22+
self.known_duplicates.add(sig)
23+
self.duplicate_nodes.add(node)
24+
return sig
25+
dfs(root)
26+
return list(self.duplicate_nodes)

0 commit comments

Comments
 (0)