/**
* 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) {
// write code here
return findh(root, o1, o2)->val;
}
TreeNode* findh(TreeNode* root, int o1, int o2)
{
if(root == NULL) return NULL;
if (root->val == o1 || root->val==o2)
return root;
TreeNode* ifLeftHave = findh(root->left, o1, o2);
TreeNode* ifRightHave = findh(root->right, o1, o2);
if(ifRightHave !=NULL && ifLeftHave != NULL)
return root;
else if (ifLeftHave != NULL)
return ifLeftHave;
else
return ifRightHave;
}
};