Lowest Common Ancestor II
Example
4
/ \
3 7
/ \
5 6Related Problems
/**
* Definition of ParentTreeNode:
*
* class ParentTreeNode {
* public ParentTreeNode parent, left, right;
* }
*/
public class Solution {
/*
* @param root: The root of the tree
* @param A: node in the tree
* @param B: node in the tree
* @return: The lowest common ancestor of A and B
*/
public ParentTreeNode lowestCommonAncestorII(ParentTreeNode root, ParentTreeNode A, ParentTreeNode B) {
// write your code here
List<ParentTreeNode> listA = getPath(A);
List<ParentTreeNode> listB = getPath(B);
int indexA = listA.size()-1;
int indexB = listB.size()-1;
ParentTreeNode res = root;
while(indexA >= 0 && indexB >= 0){
if(listA.get(indexA) != listB.get(indexB)){
break;
}
res = listA.get(indexA);
indexA--;
indexB--;
}
return res;
}
public List<ParentTreeNode> getPath(ParentTreeNode node){
List<ParentTreeNode> list = new ArrayList<>();
while(node != null){
list.add(node);
node = node.parent;
}
return list;
}
}Last updated