相关标签
一、题目要求
二、题解和代码实现
1.题解
2.代码实现
代码如下(示例):
/**
* 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) {
//终止条件, // 1. p, q分别在root的左右两边
if ( (root.val < p.val && root.val > q.val)||(root.val>p.val && root.val <q.val) ){
return root;
}
// // 2. p,q中的任一一个为根节点
if(root == p || root ==q){
return root;
}
// 单层逻辑
// 1. 检查p,q,root三者关系是否满足退出条件
// 2. p,q如果都>root,则在root的右子树中继续寻找答案
if (root.val < p.val && root.val < q.val){
return lowestCommonAncestor(root.right,p,q);
}else if (root.val> p.val && root.val > q.val){
// 2. p,q如果都<root,则在root的左子树中继续寻找答案
return lowestCommonAncestor(root.left,p,q);
}
return null;
}
}