class Solution {
public:
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
//思路:求p的所有祖先,求q的所有祖先,第i个不同值为最近祖先
TreeNode* ans;
vector pa,qa;
pa = ComputeAncestor (root,p);
qa = ComputeAncestor (root,q);
for(int i=0;i ComputeAncestor(TreeNode* root,TreeNode* x){
vector ans;
stack S;
TreeNode* p=root;
TreeNode* r=NULL;
while(p || !S.empty() ){
if(p){
S.push(p);
p=p->left;
}
else{
p=S.top();
if( !p->right || r==p->right) {
if(x==p) {
int n =S.size();
for(int i=0;iright;
}
}
return ans;
}
};