LeetCode:652. 寻找重复的子树
class Solution {
public:
unordered_map<string, int> subTree;
// 指向 TreeNode 对象的指针类型
vector<TreeNode*> res;
vector<TreeNode*> findDuplicateSubtrees(TreeNode* root) {
serialize(root);
return res;
}
//辅助函数
string serialize(TreeNode* root){
if(root==nullptr){
return "#";
}
string left=serialize(root->left);
string right=serialize(root->right);
string myself=left+","+right+","+to_string(root->val);
int fre=subTree[myself];
if(fre==1){
res.push_back(root);
}
subTree[myself]=fre+1;
return myself;
}
};