Find Duplicate Subtrees
LeetCode 652
from collections import Counter
class Solution:
def findDuplicateSubtrees(self, root):
"""
:type root: TreeNode
:rtype: List[TreeNode]
1
/ \
2 3
/ / \
4 2 4
/
4
使用 post-order dfs 以每個node為記錄點紀錄子樹構成
若不用Counter()而只用dictionary的話要注意 key error問題
dict[strr] = dict.get(strr,0) + 1
"""
counter = Counter()
res = []
def dfs(root):
if not root:
return '#'
strr = dfs(root.left) + dfs(root.right) + str(root.val)
if counter[strr] == 1:
res.append(root)
counter[strr] +=1
return strr
dfs(root)
return res
Last updated