2
* Definition for a binary tree node.7
* TreeNode() : val(0), left(nullptr), right(nullptr) {}8
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}9
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left),15
void help(TreeNode *root, TreeNode *par, map<TreeNode *, TreeNode *> &m) {16
if (root == NULL) return;18
help(root->left, root, m);19
help(root->right, root, m);21
TreeNode *subtreeWithAllDeepest(TreeNode *root) {23
map<TreeNode *, TreeNode *> m;26
vector<TreeNode *> ans;31
for (int i = 0; i < s; i++) {32
TreeNode *bgn = q.front();35
if (bgn->left != NULL) q.push(bgn->left);36
if (bgn->right != NULL) q.push(bgn->right);40
if (ans.size() == 1) return ans[0];42
while (s.size() != 1) {44
for (int i = 0; i < ans.size(); i++) {47
s.insert(ans.begin(), ans.end());