首页 > 代码库 > 二叉树---最近公共父节点(LCA)
二叉树---最近公共父节点(LCA)
题目:
给定一棵二叉树,找到两个节点的最近公共父节点(LCA)。
最近公共祖先是两个节点的公共的祖先节点且具有最大深度。
4
/ 3 7
/ 5 6
LCA(3, 5) = 4
LCA(5, 6) = 7
LCA(6, 7) = 7
Java代码:
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode A, TreeNode B) { // write your code here if(root == null||root == A||root == B){ return root; } //分而 TreeNode left = lowestCommonAncestor(root.left, A, B);//这里主要用来找根节点子树是否有A或B节点;因为有可能A或B在一侧或者各自在一侧,这是都有可能的。 TreeNode right = lowestCommonAncestor(root.right, A, B); //治之 if(left!=null&&right!=null){ //如果这个节点不是A或B的话就返回该节点,然后继续往下搜索 return root; } if(left!=null){ return left; } if(right != null){ return right; } return null; }
二叉树---最近公共父节点(LCA)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。