题解 | #二叉搜索树的最近公共祖先#

二叉搜索树的最近公共祖先

https://www.nowcoder.com/practice/d9820119321945f588ed6a26f0a6991f

保存路径法

/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 * };
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param root TreeNode类 
 * @param p int整型 
 * @param q int整型 
 * @return int整型
 */
 #define Maxsize 20
struct TreeNode** getpath(struct TreeNode* p,int target,int* count){
    struct  TreeNode** path = (struct TreeNode**)malloc(sizeof(struct TreeNode*)*Maxsize);
    int j = 0;
    for(int i = 0;i<Maxsize;i++){
        path[i] = (struct TreeNode*)malloc(sizeof(struct TreeNode));
    }
    while(p->val!=target){
        path[j] = p;
        if(p->val<target) p = p->right;
        else p = p->left;
        j++;
    }
    path[j] = p;
    *count = j;
    return path;
}
int lowestCommonAncestor(struct TreeNode* root, int p, int q ) {
    // write code here
    int count1 = 0;
    int count2 = 0;
    struct TreeNode** path1 = getpath(root,p,&count1);
    struct TreeNode** path2 = getpath(root,q,&count2);
    int resul;
    for(int i = 0;i<=count1&&i<=count2;i++){
        if(path1[i]->val == path2[i]->val)
            resul = path1[i]->val;
        else break;
    }
    return resul;
}

全部评论

相关推荐

#96年28岁其实挺小的#还没到28岁,不过也快了。没想到时间过得这么快,遥想大学毕业时我才23岁,读了个研,26了大学时我是一个风风火火的人,有想法&nbsp;有干劲&nbsp;有活力的人,觉得未来充满无限可能。我参加了很多的活动,也亲自作为负责人举办了全校规模的比赛,我体验了非常多不一样的事情,曾一度在一个星期内走遍了学校所有的男生宿舍去推销宣传产品,去校外拉赞助,谈''合作''&nbsp;锻炼了自己的口才,增长了自己的见识。现在想想,这些事好多都挺幼稚。但那个时候是我火一般的岁月,每天都充满激情。大学时不爱上课,所以文化课学的不怎么样,当时对这件事有遗憾,我没有高中时静心学习的能力了。后来,我想静...
大祥老师永远的0:徐霞客那一章作为七本书的尾声确实点睛之笔。 打开书时,个人的命运令我扼腕,王侯将相的事迹令我心潮澎湃,王朝的兴衰令我哀叹。 合上书后,最受用的还是最后一句话,幡然醒悟过来这些早已是过往云烟,你对它们扼腕、澎湃、哀叹其实轻于鸿毛,正如作者所言“先变成粪,后变成土”,用喜欢的方式度过自己的一生未必就不比书中的一个个名留青史的历史人物活得风采。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务