非独立思考

    1. class Solution {
    2. public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
    3. // 将2个节点放在一起讨论,当p q均小于或大于当前节点时,那么证明他们还在当前节点的某一子树中
    4. // 如果不满足上一行的条件,那么证明:他们产生分叉
    5. // 即他们的最近公共祖先
    6. TreeNode ancestor = root;
    7. while (true) {
    8. if (ancestor.val > p.val && ancestor.val > q.val) {
    9. ancestor = ancestor.left;
    10. } else if (ancestor.val < p.val && ancestor.val < q.val) {
    11. ancestor = ancestor.right;
    12. } else {
    13. // 找到了!
    14. return ancestor;
    15. }
    16. }
    17. }
    18. }