Ninja technique🥷 to ACE DSA Interviews.
class Solution {
public:
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
if(root==NULL || root==p || root==q) return root;
TreeNode* left = lowestCommonAncestor(root->left,p,q);
TreeNode* right = lowestCommonAncestor(root->right,p,q);
if(left == NULL) return right;
else if(right == NULL) return left;
else return root; // both are not null
}
};
class Solution {
public:
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
TreeNode* cur = root;
while (true) {
if (p -> val < cur -> val && q -> val < cur -> val) {
cur = cur -> left;
} else if (p -> val > cur -> val && q -> val > cur -> val) {
cur = cur -> right;
} else {
break;
}
}
return cur;
}
};