题目
My way
序列化 + 重复子序列DP解法 + 反序列化回去时找到对应子树root结点
感觉代价过高,而且在反序列化回去找到对应结点时会很麻烦。
yushinan
序列化+hash取出重复子树的头结点
1 | /** |
*yuguorui
1 | struct SubTreeCount |
- 利用了
hash<string>
后结果,作为判断这一子序列是否出现过的情况/有重复子串的情况; - 用
snprintf
的IO流来生成对应序列化结果。
总结
- 对整棵树中,每一颗子树都进行序列化,并利用
unordered_map
得到每个子树的序列化结果是否重复 - 对于序列化路径有:node.path = node.val + node.left.path + node.right.path
- 这里的序列化,可以不用序列化
null
Reference
https://leetcode-cn.com/problems/find-duplicate-subtrees/solution/simple-solution-by-yushinan-2/