一、题目
力扣原题:https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-tree/
二、递归
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
if (null == root || null == p || null == q) {
return null;
}
// 若当前节点为p节点或q节点,则当前节点即“最近公共祖先”,直接返回即可(剪枝)
if (root.val == p.val || root.val == q.val) {
return root;
}
// 判断左子树是否存在p节点或q节点
TreeNode left = null;
if (null != root.left) {
left = lowestCommonAncestor(root.left, p, q);
}
// 判