找两条线路的第一个交点即可。类似 两个链表的第一个公共结点
/*
// Definition for a Node.
class Node {
public:
int val;
Node* left;
Node* right;
Node* parent;
};
*/
class Solution {
public:
Node* lowestCommonAncestor(Node* p, Node * q) {
auto a=p,b=q;
while(a!=b)
{
if(a) a=a->parent;
else a=q;
if(b) b=b->parent;
else b=p;
}
return a;
}
};