struct TreeNode* lowestCommonAncestor(struct TreeNode* root, struct TreeNode* p, struct TreeNode* q) { if(root->val>p->val&&root->val<q->val) return root; //若p结点的值<q结点的值,而根节点的值位于两者之间,说明是最近公共祖先 else if(root->val<p->val&&root->val>q->val) return root; //若p结点的值>q结点的值,而根节点的值位于两者之间,说明是最近公共祖先 else if(root->val==p->val||root->val==q->val) return root; //如果先遍历到其中一个结点,说明另一个结点是该结点的子树,直接返回 else if(root->val>p->val&&root->val>q->val) return lowestCommonAncestor(root->left,p,q); //如果根节点的值比两个结点的值都大,说明两个结点都在根节点的左子树,则向左子树递归 else return lowestCommonAncestor(root->right,p,q); //如果根节点的值比两个结点的值都小,说明两个结点都在根节点的右子树,则向右子树递归 }