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

递归根据条件进行判断,如果p和q分别大于或小于遍历到的当前节点的值,那么肯定当前节点是祖先,如果p和q都大于当前节点值,那么就找当前节点的右子树,否则找左子树。直到找到p和q分别大于或小于遍历到的当前节点的值。

/*
 * function TreeNode(x) {
 *   this.val = x;
 *   this.left = null;
 *   this.right = null;
 * }
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param root TreeNode类 
 * @param p int整型 
 * @param q int整型 
 * @return int整型
 */
function lowestCommonAncestor( root ,  p ,  q ) {
    // write code here
    return dfs(root)
    function dfs(node){
        if(!node) return -1
        //p和q分别大于或小于遍历到的当前节点的值
        if((p>=node.val&&q<=node.val)||(p<=node.val&&q>=node.val)){
            return node.val
        }
        //p和q都大于当前节点值,那么就找当前节点的右子树
        if(p > node.val && q > node.val){
            return dfs(node.right)
        }
        if(p<node.val&&q<node.val){
            return dfs(node.left)
        }
    }
    
}
module.exports = {
    lowestCommonAncestor : lowestCommonAncestor
};
全部评论

相关推荐

点赞 评论 收藏
分享
去年九月,正值秋招,刚好学校组织多场线下招聘会经验不足,就拿着简历过去了(实际双非院校的招聘会惨不仍睹,不是销售就是教培,去的必要性不是很大)不过,九月初那场正好碰见一家国企研究所,总部在广州增城区,做质量检测的。看了一下岗位需求属于科研助理工程师,需要有一定的论文专利撰写能力,待遇也还不错,年包20左右,后两年每年以30%的幅度上涨。说实话,还是挺符合我的规划的,本身自己发表的论文还算多,同时质量检测和我本身想找的测试岗也类似,也是国央企编制。因此,便提交了简历,在一周不到便收到了面试。面试第一轮是主任面,面试感觉还可以,主要聊了很多科研方面的事情,对我的成果也很感兴趣。面试完十分钟便收到了HR的信息,通知可以约下一轮面试了,属于副总面(还在心想,果然是国央企啊,一个面试还能见到副总),不过这时候比较有意思的来了,HR和我说必须得线下面,因此让我去广州,不过可以报销车费啥的,但是具体啥时候面试又得看副总的时间…感觉有点儿扯,武汉去广州高铁得六个多小时,但是谨记不放过任何一个面试机会的态度,我还是同意了到了中午,HR又和我发消息,说可以今天就面,不过好的一点,可以线上面试,然后约好面试时间,我就忐忑地在等待着了,然而等到了面试时间,我进入面试间,等好一会儿,还是没等着副总,最终询问HR才说刚刚副总有别的会议无法面试。好的,我可以理解,毕竟是副总嘛,人家事儿多,然后又约着第二天面试。第二天到了约好的时间,四点钟开始,我很早就在面试间了,等待半小时没有任何消息,询问HR让我继续等待,继续等待一个半小时还是没消息,又让我继续等待(马上快六点了,我实习公司都快要下班了),然后再次等待半小时(总共在面试间等待两个半小时,中间还不能退出,需要一直戴着耳机听到里面的动静,副总有没有进会议),大概六点半才开始面试。骚的地方来了,我等待了两个半小时的面试,副总进来后一句不好意思都没有,直接就开始面试,总共面试就15分钟,中间还接了5分钟的电话,然后一直打断我问我为什么没在简历上面写我发表的论文名(主要是大多数公司确实不看论文啊),两个问题问就五分钟,然后让我反问五分钟就结束了,逆天的面试体验。其实更骚的一点是,他们还要手写一份应聘承诺书和个人简历表,各种奇葩的问题还需要手写(什么性格优缺点,喜欢的学科,爱好特长,为何能胜任岗位,岗位理解,英语水平等等)它家真算得上秋招面试中最奇葩的,最终挂的原因大概率是因为本身我的学历确实不太优秀,就没得到副总的看重。而在他家面试面试前一个小时,海康一面的时候,同样被质疑到:&amp;quot;你一个双非硕士,为什么能有三段实习,在我之前面试的92的同学中还有很多都没有实习的,你觉得这是什么原因?我看你拿了很多竞赛的奖项,是真的假的?方面给我看一下获奖证明吗?&amp;quot;当天正在公司,也恰巧正值学院计算综测统计竞赛获奖的情况,刚好把获奖截图发给班长,最终真的就是让我一张一张找出来给她看……我可以接受你不认可我的能力,觉得我的能力不能胜任岗位,但是接受不了这种不尊重和质疑……
国家一级产品交付工程...:这个世界也太颠了 想起来第一次实习面试 一家小公司 刚到就要填各种各样的表 然后老板来面试 一直问数学怎么样 最后还说给我开50一天 够我一天的吃饭和路费了 希望我第二天就可以来 还说给我这么好的一个学习机会 应该珍惜感谢他
点赞 评论 收藏
分享
计算机类的会考啥啊
投递中国电信等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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