diff --git a/1123. Lowest Common Ancestor of Deepest Leaves b/1123. Lowest Common Ancestor of Deepest Leaves new file mode 100644 index 0000000..aadcceb --- /dev/null +++ b/1123. Lowest Common Ancestor of Deepest Leaves @@ -0,0 +1,40 @@ +/** + * Definition for a binary tree node. + * struct TreeNode { + * int val; + * TreeNode *left; + * TreeNode *right; + * TreeNode() : val(0), left(nullptr), right(nullptr) {} + * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} + * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} + * }; + */ + +class Solution { +public: + TreeNode* helper(unordered_set&s, TreeNode *root){ + if(!root) return NULL; + if(s.count(root))return root; + TreeNode* l = helper(s, root->left); + TreeNode* r = helper(s, root->right); + if(l && r)return root; + return l ? l : r; + } + TreeNode* lcaDeepestLeaves(TreeNode* root) { + unordered_sets; + queueq; + q.push(root); + while(q.size()){ + int n = q.size(); + s.clear(); + while(n--){ + TreeNode* temp = q.front(); + q.pop(); + s.insert(temp); + if(temp->left) q.push(temp->left); + if(temp->right) q.push(temp->right); + } + } + return helper(s, root); + } +};