您好,登录后才能下订单哦!
二叉树的最近公共祖先该怎么理解,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
题目:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。
三种情况讨论:
如果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节点的 左右两边
}
}
关于二叉树的最近公共祖先该怎么理解问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。