/** * DeFinition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x),left(NULL),right(NULL) {} * }; */ class Solution { public: TreeNode* lowestCommonAncestor(TreeNode* root,TreeNode* p,TreeNode* q) { if(root==NULL)return NULL;
// 要么在左子树,要么在右子树,要么就是根节点 while(root){ if(p->val>root->val&&q->val>root->val) root=root->right; else if(p->val<root->val&&q->val<root->val) root=root->left; else return root; } } };