Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!
当前位置: 主页 > Java文档 > Java基础相关 >

labuladong的刷题笔记V2.0(力扣版) PDF 下载


分享到:
时间:2023-10-29 10:46来源:http://www.java1234.com 作者:转载  侵权举报
labuladong的刷题笔记V2.0(力扣版)
失效链接处理
labuladong的刷题笔记V2.0(力扣版) PDF 下载

 
 
相关截图:
 


主要内容:


基本思路
经典问题了,先给出递归函数的定义:给该函数输⼊三个参数 rootpq,它会返回⼀个节点:
情况 1,如果 和 都在以 root 为根的树中,函数返回的即使 和 的最近公共祖先节点。
情况 2,那如果 和 都不在以 root 为根的树中怎么办呢?函数理所当然地返回 null 呗。
情况 3,那如果 和 只有⼀个存在于 root 为根的树中呢?函数就会返回那个节点。
根据这个定义,分情况讨论:
情况 1,如果 和 都在以 root 为根的树中,那么 left 和 right ⼀定分别是 和 q(从 base case 看出
来的)。
情况 2,如果 和 都不在以 root 为根的树中,直接返回 null
情况 3,如果 和 只有⼀个存在于 root 为根的树中,函数返回该节点。
详细题解:Git原理之最近公共祖先

解法代码
class Solution {
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p,
TreeNode q) {
// base case
if (root == nullreturn null;
if (root == p || root == q) return root;
TreeNode left = lowestCommonAncestor(root.left, p, q);
TreeNode right = lowestCommonAncestor(root.right, p, q);
// 情况 1
if (left != null && right != null) {
return root;
}
// 情况 2
if (left == null && right == null) {
return null;
}
// 情况 3
return left == null ? right : left;
}
}


 
------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐