解题思路
计算两个节点到最终祖先的距离 根据这两个距离让两个节点来到同一高度 然后直接一步一步网上找公共祖先
代码
import java.util.*;
class TreeNode {
int val;
TreeNode father;
TreeNode lchild;
TreeNode rchild;
public TreeNode (int val) {
this .val = val;
}
}
public class Main {
public static TreeNode findTheirFather (TreeNode node1, TreeNode node2) {
int pathlen1 = 0 , pathlen2 = 0 ;
TreeNode temp = node1;
while (temp.father != null ) {
pathlen1++;
temp = temp.father;
}
temp = node2;
while (temp.father != null ) {
pathlen2++;
temp = temp.father;
}
int pathlen11 = pathlen1, pathlen22 = pathlen2;
pathlen11 = pathlen11 - Math.min(pathlen1, pathlen2);
pathlen22 = pathlen22 - Math.min(pathlen1, pathlen2);
while (pathlen11 > 0 ) {
pathlen11--;
node1 = node1.father;
}
while (pathlen22 > 0 ) {
pathlen22--;
node2 = node2.father;
}
while (node1 != node2) {
node1 = node1.father;
node2 = node2.father;
}
return node1;
}
public static void main (String[] args) {
}
}