代码:
/**
* 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) {
if(!root) return -1;
if(root->val == o1 || root->val == o2) return root->val;
int v1 = lowestCommonAncestor(root->left, o1, o2);
int v2 = lowestCommonAncestor(root->right, o1, o2);
if(v2 == -1) return v1; //若是有一个为-1,则说明以root为根结点的子树最多有一个子树
if(v1 == -1) return v2;
return root->val; //若两边都不为-1则说明o1、o2在root的两边,则公共祖先即为root
}
};