题目链接:https://leetcode.cn/problems/er-cha-shu-de-zui-jin-gong-gong-zu-xian-lcof/description/?favorite=xb9nqhhg
代码:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
map<TreeNode*,int>vis;
map<TreeNode*,TreeNode*>fa;
void dfs(TreeNode *root)
{
if(root==NULL)
{
return ;
}
if(root->right!=NULL)
{
fa[root->right]=root;
dfs(root->right);
}
if(root->left!=NULL)
{
fa[root->left]=root;
dfs(root->left);
}
}
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
dfs(root);
TreeNode *ans;
while(p!=NULL)
{
vis[p]=1;
p=fa[p];
}
while(q!=NULL)
{
if(vis[q]!=0)
{
//printf("%d\n",q->val);
ans=q;
break;
}
q=fa[q];
}
return ans;
}
};