千家信息网

二叉树的最近公共祖先该怎么理解

发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,二叉树的最近公共祖先该怎么理解,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。题目:给定一个二叉树, 找到该树中两个指定节点的最近公共
千家信息网最后更新 2025年02月03日二叉树的最近公共祖先该怎么理解

二叉树的最近公共祖先该怎么理解,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

题目:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。

三种情况讨论:

如果p和q分别是root的左右节点,那么root就是我们要找的最近公共祖先
如果p和q都是root的左节点,那么返回lowestCommonAncestor(root.left,p,q)
如果p和q都是root的右节点,那么返回lowestCommonAncestor(root.right,p,q)

class Solution {

public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {

if (root == null) return root;

if (p == root || q == root) return root;

TreeNode rleft = lowestCommonAncestor(root.left, p, q);

TreeNode rright = lowestCommonAncestor(root.right, p , q);

if (rleft == null) return rright;

if (rright == null) return rleft;

return root; // 此时是 p 和 q 节点再root节点的 左右两边

}

}

关于二叉树的最近公共祖先该怎么理解问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

0