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

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

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整型
 */

int lowestCommonAncestor(struct TreeNode* root, int p, int q ) {
    struct TreeNode* cur = root;
    int temp = 0;
    //将p指向较小的值,q指向较大的值
    if (q < p ) {
        temp = p;
        p = q;
        q = temp;
    }
    while (1) {
        //p为最近公共祖先
        if (cur->val == p)
            return p;
        //q为最近公共祖先
        else if (cur->val == q)
            return q;
        //cur所指结点为最近公共祖先
        else if (cur->val > p && cur->val < q)
            return cur->val;
        //最近公共祖先在cur的左子树
        else if (cur->val > p && cur->val > q)
            cur = cur->left;
        //最近公共祖先在cur的右子树
        else
            cur = cur->right;
    }
}
//最近公共祖先一定是在p、q之间的值

全部评论

相关推荐

07-22 13:50
门头沟学院 Java
仁者伍敌:其实能找到就很好了,当然收支能抵
点赞 评论 收藏
分享
Vincent777...:实习经历可以考虑放上去,对于软件使用方面可以细化一些,比如调整为:熟悉基于LSDYNA的瞬态动力学仿真分析,熟悉基于WORKBENCH的结构拓扑优化
我的简历长这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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