method 1
哈希表中存储树的节点
private:
vector<TreeNode*> ret;
unordered_map<string, int> map;
public:
string dfs(TreeNode* root) {
if(root == nullptr) return "";
string str = to_string(root->val) + ' ' + dfs(root->left) + ' ' + dfs(root->right);
map[str] ++;
if(map[str] == 2) ret.push_back(root);
return str;
}
vector<TreeNode*> findDuplicateSubtrees(TreeNode* root) {
dfs(root);
return ret;
}