題目:
Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BST.
給出一個二叉搜索樹,求出給定了兩個節(jié)點的最小公共祖先-
分析:
- 對于一棵二叉搜索樹來說,兩個節(jié)點的公共祖先肯定是大于等于其中一個節(jié)點,小于等于另外一個節(jié)點的
- 根據(jù)二叉搜索樹的特性,在遞歸的過程中,如果當前節(jié)點值大于兩個給定節(jié)點的話,那么下一步遞歸將要遞歸左節(jié)點,如果當前節(jié)點值小雨兩個給定節(jié)點的話,那么下一步遞歸將要遞歸右節(jié)點
代碼:
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
if (root->val > p->val && root->val > q->val) {
return lowestCommonAncestor(root->left, p, q);
} else if (root->val < p->val && root->val < q->val) {
return lowestCommonAncestor(root->right, p, q);
} else {
return root;
}
}