diff options
Diffstat (limited to 'lowest_common_ancestor_bst.cpp')
-rw-r--r-- | lowest_common_ancestor_bst.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/lowest_common_ancestor_bst.cpp b/lowest_common_ancestor_bst.cpp new file mode 100644 index 0000000..d496c2c --- /dev/null +++ b/lowest_common_ancestor_bst.cpp @@ -0,0 +1,17 @@ +#include "leetcode.h" + +class Solution { +public: + TreeNode *lowestCommonAncestor(TreeNode *root, TreeNode *p, TreeNode *q) { + int small = min(p->val, q->val), large = max(p->val, q->val); + while (root != nullptr) { + if (root->val > large) + root = root->left; + else if (root->val < small) + root = root->right; + else + return root; + } + return nullptr; + } +}; |