Skip to content

Commit 9ed6a7e

Browse files
authored
Update 652.Find-Duplicate-Subtrees_v2.cpp
1 parent 2bbe7cd commit 9ed6a7e

1 file changed

Lines changed: 15 additions & 15 deletions

File tree

Tree/652.Find-Duplicate-Subtrees/652.Find-Duplicate-Subtrees_v2.cpp

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,37 +9,37 @@
99
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
1010
* };
1111
*/
12-
using LL = long long;
1312
class Solution {
14-
vector<TreeNode*>rets;
15-
unordered_map<LL, int>key2Id;
16-
unordered_map<LL, int>key2count;
13+
unordered_map<string, int> key2Id;
14+
unordered_map<string, int> key2count;
15+
vector<TreeNode*> rets;
1716
public:
1817
vector<TreeNode*> findDuplicateSubtrees(TreeNode* root)
1918
{
20-
getID(root);
21-
return rets;
19+
getId(root);
20+
return rets;
2221
}
23-
24-
LL getID(TreeNode* node)
22+
23+
int getId(TreeNode* node)
2524
{
2625
if (node==NULL) return 0;
27-
LL key = (getID(node->left)<<32) + (getID(node->right)<<16) + node->val;
28-
29-
if (key2Id.find(key)==key2Id.end())
30-
{
31-
key2Id[key] = key2Id.size();
26+
27+
string key = to_string(node->val) + "#" + to_string(getId(node->left)) + "#" + to_string(getId(node->right));
28+
29+
if (key2Id.find(key) == key2Id.end())
30+
{
31+
key2Id[key] = key2Id.size()+1;
3232
key2count[key] = 1;
3333
}
3434
else
3535
{
36-
key2count[key] += 1;
36+
key2count[key]+=1;
3737
if (key2count[key]==2)
3838
{
3939
rets.push_back(node);
4040
}
4141
}
42-
42+
4343
return key2Id[key];
4444
}
4545
};

0 commit comments

Comments
 (0)