struct TreeNode* helper(struct TreeNode* root, int o1, int o2){ if(root == NULL || root->val == o1 || root->val == o2) return root; // 找到空结点,或者找到要目标值时返回当前子树的根结点 struct TreeNode* p1 = helper(root->left, o1, o2); //先在左子树找 struct TreeNode* p2 = helper(root->right, o1, o2); //再在右子树找 if(p1 == NULL) //递归左子树结果为空,表示两数都在右子树 return p2; if(p2 == NULL) //递归右子树结果为空,表示两数都在左子树 return p1; return root; //左子树右子树递归结果都不空时,表示一个在左,一个在右,返回当前根结点 } int lowestCommonAncestor(struct TreeNode* root, int o1, int o2 ) { int ret = 0; ret = helper(root, o1,o2)->val; return ret; }