NC102 在二叉树中找到两个节点的最近公共祖先

2022-09-11 09:29:16

NC102 在二叉树中找到两个节点的最近公共祖先

在这里插入图片描述
递归写法

classSolution{public:/**
     * 
     * @param root TreeNode类 
     * @param o1 int整型 
     * @param o2 int整型 
     * @return int整型
     */
    
    TreeNode*find(TreeNode*root,int o1,int o2){if(root==NULL)returnNULL;if(root->val==o1||root->val==o2)return root;
        
        TreeNode*left=find(root->left,o1,o2);
        
        TreeNode*right=find(root->right,o1,o2);if(left&&right)return root;elseif(left==NULL)return right;elsereturn left;}intlowestCommonAncestor(TreeNode* root,int o1,int o2){// write code here
        
        TreeNode*t=find(root,o1,o2);if(t)return t->val;elsereturn-1;}};

非递归写法

classSolution{public:
    
    map<int,int>mp;voiddfs(TreeNode*root,TreeNode*father){

        mp[root->val]=father->val;if(root->left)dfs(root->left,root);if(root->right)dfs(root->right,root);}intlowestCommonAncestor(TreeNode* root,int o1,int o2){if(root==NULL)returnNULL;
        
        TreeNode*zu=newTreeNode(-1000000);dfs(root,zu);
        
        map<int,int> mp1;while(o1!=-1000000){
            mp1[o1]=1;
            o1=mp[o1];}while(o2!=-1000000){if(mp1[o2])return o2;
            
            o2=mp[o2];}return0;}};
  • 作者:溺水的鱼xu
  • 原文链接:https://blog.csdn.net/weixin_43310882/article/details/119211886
    更新时间:2022-09-11 09:29:16