struct TreeNode *find(struct TreeNode* root,int max,int min) { if(min<root->val&&max>root->val) return root; else if(min==root->val||max==root->val) return root; else if(max<root->val) return find(root->left,max,min); else return find(root->right,max,min); } int lowestCommonAncestor(struct TreeNode* root, int p, int q ) { int max=p>q?p:q,min=p<q?p:q; return find(root,max,min)->val; }