일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- kaggle
- 시바견
- LeetCode
- 315. Count of Smaller Numbers After Self
- 715. Range Module
- concurrency
- iterator
- 파이썬
- Substring with Concatenation of All Words
- Decorator
- Class
- 109. Convert Sorted List to Binary Search Tree
- 운영체제
- Regular Expression
- Protocol
- 43. Multiply Strings
- data science
- Convert Sorted List to Binary Search Tree
- Generator
- DWG
- Python Implementation
- attribute
- 30. Substring with Concatenation of All Words
- shiba
- t1
- Python Code
- 밴픽
- Python
- 컴퓨터의 구조
- 프로그래머스
Archives
- Today
- Total
Scribbling
LeetCode: 652. Find Duplicate Subtrees 본문
All we have to do is traversing every node by dfs and checking whether current node's structure is already seen or not.
Then, we need to come up with a way to 'represent' a tree's structure. Here, we use a string to represent the tree structure. --> str(node.val) + (left tree structure) + (right tree structure)
If it is a new string, we add to our dictionary (self.dp).
If it is a already seen string, we check if it is seen for the second time with its value (self.dp[string]).
Time complexity: O(N)
Space Complexity: O(N)
# 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 findDuplicateSubtrees(self, root: Optional[TreeNode]) -> List[Optional[TreeNode]]:
self.dp = {}
self.ret = []
self.dfs(root)
return self.ret
def dfs(self, node):
if not node:
return ""
left, right = self.dfs(node.left), self.dfs(node.right)
ret = str(node.val) + '(' + left + ')' + '(' + right + ')'
if ret not in self.dp:
self.dp[ret] = True
else:
if self.dp[ret]:
self.ret.append(node)
self.dp[ret] = False
return ret
'Computer Science > Coding Test' 카테고리의 다른 글
LeetCode: 1048. Longest String Chain (0) | 2022.02.27 |
---|---|
LeetCode: 990. Satisfiability of Equality Equations (0) | 2022.02.26 |
LeetCode: 465. Optimal Account Balancing (0) | 2022.02.17 |
LeetCode: 410. Split Array Largest Sum (0) | 2022.02.17 |
LeetCode: 315. Count of Smaller Numbers After Self (0) | 2022.02.10 |