* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
class Solution {
public:
/**
*
* @param root TreeNode类
* @param o1 int整型
* @param o2 int整型
* @return int整型
*/
int lowestCommonAncestor(TreeNode* root, int o1, int o2) {
return check(root,o1,o2)->val;
}
TreeNode* check(TreeNode* root,int o1,int o2){
//找到结点就返回,可能同子树,也可能不同
if(root==NULL||root->val==o1||o2==root->val)return root;
//检查左右子树是否存在o1,o2
TreeNode* left=check(root->left, o1, o2);
TreeNode* right=check(root->right, o1, o2);
//为空返回上一层
if(left==NULL)return right;
if(right==NULL)return left;
//左右都不为空,则为最近共同祖先
return root;
}
};