必须使用后续遍历
class Solution {
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
if (root == null || root == p || root == q) { // 递归结束条件
return root; // 只要找到相等的节点 就返回当前节点 或者递归结束
}
// 后序遍历
TreeNode left = lowestCommonAncestor(root.left, p, q); // 判断左边找到相应的节点没
TreeNode right = lowestCommonAncestor(root.right, p, q); //判断右边找到相应的节点没
if(left == null && right == null) { // 若未找到节点 p 或 q
return null;
}else if(left == null && right != null) { // 若找到一个节点
return right;
}else if(left != null && right == null) { // 若找到一个节点
return left;
}else { // 若找到两个节点
return root;
}
}
}