题解 | #在二叉树中找到两个节点的最近公共祖先#

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

http://www.nowcoder.com/practice/e0cc33a83afe4530bcec46eba3325116

注前序遍历+栈思想

/**
 * struct TreeNode {
 *    int val;
 *    struct TreeNode *left;
 *    struct TreeNode *right;
 * };
 */

class Solution {
public:
    /**
     * 
     * @param root TreeNode类 
     * @param o1 int整型 
     * @param o2 int整型 
     * @return int整型
     */
    int lowestCommonAncestor(TreeNode* root, int o1, int o2) {
        // write code here

        if(!root){
            return 0;
        }


        int result;

        vector<int> o1_path;
        vector<int> o2_path;

        vector<int> path;

        int finish = 0;
        preorder(root, o1_path,o1,finish,path);
        path.clear();
        finish = 0;
        preorder(root, o2_path,o2,finish,path);

        int min_length;


        if(o1_path.size()<=o2_path.si***_length = o1_path.size();
        }else{
            min_length = o2_path.size();
        }

        for(int i = 0; i< min_length;i++){
            if(o1_path[i]==o2_path[i]){
                result = o1_path[i];
            }
        }


        return result;
    }

    void preorder(TreeNode* root, vector<int>& result, int target, int &finish, vector<int>& path ){

        if(!root || finish){
            return;
        }

        path.push_back(root->val);

        if(root->val == target){
           finish = 1;
           result = path;
        }

        preorder(root->left, result, target, finish,path);
        preorder(root->right,result, target,finish,path);

        path.pop_back();

    }

};
算法解析 文章被收录于专栏

这里主要是算法岗的自我思路总结

全部评论

相关推荐

02-01 19:48
门头沟学院 Java
神哥了不得:(非引流)直接暑期吧,没时间日常了,老鱼简历把水印去了,或者换个模板,简历字体大小都不太行,建议换2个高质量的项目,面试应该还会再多一些
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务