二叉树的最近公共祖先

1、题目描述:

https://leetcode-cn.com/problems/er-cha-shu-de-zui-jin-gong-gong-zu-xian-lcof/

2、思路:

  看官方题解,深入理解深度优先遍历

3、代码

复制代码
package 二叉树;

public class 二叉树的公共父节点 {
    public static void main(String[] args) {


    }

    public TreeNode ans = null;

    // x节点 (左子树包含p && 右子树包含q)((根节点就是p || 根节点就是q)&& (右子树含有p || 左子树含有q)这个节点就是公共父节点
    public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
        dfs(root, p, q);
        return ans;
    }
    
    // 本道题能够让我们更好的理解深度优先遍历
    public boolean dfs(TreeNode root, TreeNode p, TreeNode q) {
        if (root == null) {
            return false;
        }
        //深入到左子树,到底返回到本层
        boolean lson = dfs(root.left, p, q);
        //继续深入到右子树,到底返回去到本层
        boolean rson = dfs(root.right, p, q);
        if (lson && rson || ((root.val == p.val || root.val == q.val) && (lson || rson))) {
            ans = root;
        }
        return lson || rson || (root.val == p.val || root.val == q.val);
    }

    static class TreeNode {
        int val;
        TreeNode left;
        TreeNode right;

        TreeNode(int val) {
            this.val = val;
        }
    }

}
复制代码

 

。。

posted @   guoyu1  阅读(31)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2020-09-11 Spark Executor内存管理
点击右上角即可分享
微信分享提示