652. 寻找重复的子树
1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8 * }; 9 */ 10 //二叉树的序列化与反序列化 11 class Solution 12 { 13 vector<TreeNode*> ans; 14 unordered_map<string,int> hash; 15 public: 16 vector<TreeNode*> findDuplicateSubtrees(TreeNode* root) 17 { 18 help(root); 19 return ans; 20 } 21 22 string help(TreeNode* root) 23 { 24 if(!root) return "#_"; 25 string res = to_string(root->val) + "_"; 26 res += help(root->left); 27 res += help(root->right); 28 if(++hash[res] == 2) 29 { 30 ans.push_back(root); 31 } 32 return res; 33 } 34 };
Mamba never out

浙公网安备 33010602011771号