题目:
给定一棵二叉树,找到两个节点的最近公共父节点(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; }
时间: 2024-12-22 02:40:08