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

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

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;
}

全部评论

相关推荐

测试糕手手:社会第一课,随便吹牛逼,直接说四个月,别老实。老实人只会被欺负
点赞 评论 收藏
分享
07-03 11:02
中山大学 C++
字节刚oc,但距离九月秋招很近了有两段互联网实习,非腾讯字节。不敢赌转正,现在在纠结去还是不去如果实习俩月离职会有什么后果吗
阿城我会做到的:不去后悔一辈子,能否转正取决于ld的态度,只要他不卡,答辩就是走流程,个人觉得可以冲一把
投递字节跳动等公司9个岗位
点赞 评论 收藏
分享
嵐jlu:我是山川🐔里🐔🧱的,阿里系简历全过; 你这简历一看就还是半成品啊,没有荣誉经历奖项什么的吗?
投递阿里巴巴集团等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务