假设给了o1和o2两个节点(节点属于同一棵树中),求两个节点的最近公共祖先。
存在两种情况:
1)、o1是o2的祖先或者o2是o1的祖先
2)、两者都不是对方的祖先。
方法一:用HashMap和HashSet:先将o1的祖先串联起来,然后在遍历o2 的祖先,找到第一个与o1的祖先相同的节点就两者共同的最近祖先。
public static Node lowestAncestor(Node head, Node o1, Node o2){
HashMap<Node, Node> fatherMap = new HashMap<>();
//特殊处理,头节点的父节点是自己
fatherMap.put(head, head);
process(head, fatherMap);
HashSet<N