思路:固定oNode2不变,不断向上查找oNode1,直至找到两个节点的公共祖先节点。首先使用A.contains(B)方法判断oNode1是否是oNode2的祖先节点,如果是则直接返回oNode1,反之使用递归方法查找oNode1的父节点oNode1.parentNode和oNode2的公共祖先节点。
function commonParentNode(oNode1, oNode2) { //n1.contains(n2)用于判断n1是否是n2的祖先节点 if(oNode1.contains(oNode2)) return oNode1 //n.parentNode用于求解n的父节点 else return commonParentNode(oNode1.parentNode,oNode2) }
总结:n1.contains(n2)用于判断n1是否是n2的祖先节点;n.parentNode用于求解n的父节点。