二叉树最近公共祖先

LCR 194. 二叉树的最近公共祖先

LCR 193. 二叉搜索树的最近公共祖先 也是一样的做法

二叉树的公共祖先的定义:对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先

分类讨论:

  1. 当前节点为空 or 当前节点等于p or 当前节点等于q,返回当前节点
  2. 左右子树相等,返回当前节点
  3. 左子树为空,右子树不为空,返回右子树,反之左子树,都为空,就返回空即可
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
        if(root == null || root == p || root == q) {
            return root;
        }
        TreeNode lnode = lowestCommonAncestor(root.left, p, q);
        TreeNode rnode = lowestCommonAncestor(root.right, p, q);
        if(lnode != null && rnode != null) {
            return root;
        }
        return lnode != null ? lnode : rnode;
}
posted @ 2025-09-22 23:51  Lantz12  阅读(21)  评论(0)    收藏  举报