1. public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
    2. // 递归终止条件,寻找相等的节点
    3. if (root == null || root == p || root == q) return root;
    4. TreeNode left = lowestCommonAncestor(root.left, p, q);
    5. TreeNode right = lowestCommonAncestor(root.right, p, q);
    6. // 如果左子树为空,那么右子树一定是最近公共祖先
    7. if (left == null) return right;
    8. // 如果右子树为空,那么左子树一定是最近公共祖先
    9. if (right == null) return left;
    10. // 如果左子树和右子树都不为空,那么root为最近公共祖先
    11. return root;
    12. }