【剑指offer】面试题68 - I:二叉树的最近公共祖先(Java)

给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。

百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”

例如,给定如下二叉搜索树:  root = [6,2,8,0,4,7,9,null,null,3,5]

示例 1:

输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8
输出: 6 
解释: 节点 2 和节点 8 的最近公共祖先是 6。
示例 2:

输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 4
输出: 2
解释: 节点 2 和节点 4 的最近公共祖先是 2, 因为根据定义最近公共祖先节点可以为节点本身。
 

说明:

所有节点的值都是唯一的。
p、q 为不同节点且均存在于给定的二叉搜索树中。

代码:

/**

 * Definition for a binary tree node.

 * public class TreeNode {

 *     int val;

 *     TreeNode left;

 *     TreeNode right;

 *     TreeNode(int x) { val = x; }

 * }

 */

class Solution {

    public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {

         if (root == null)

            return null;

        

        if (root.val > p.val && root.val > q.val)

            return lowestCommonAncestor(root.left, p, q);

        if (root.val < p.val && root.val < q.val)

            return lowestCommonAncestor(root.right, p, q);

 

        return root;

    }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485195.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工业传感器:工业互联网的第一道门

来源&#xff1a;北京物联网智能技术应用协会作者&#xff1a;刘沁沈阳仪表科学研究院副总工程师、传感器国家工程研究中心常务副主任工业的发展离不开众多感知技术的加持&#xff0c;其中最为关键的技术之一便是传感器。可以说&#xff0c;工业传感器让自动化智能设备有了感知…

数学:二项式定理

先贴一张网图来弥补一下知识点&#xff0c;回顾NOIP2011计算系数 既然我们要求的是展开式中某一项的系数&#xff0c;那么就直接求出其对应的组合数就好了&#xff0c;但是要注意x和y都是有系数a和b的 x,y换成ax,by&#xff0c;得到x^ny^m的系数是a^n*b^m*C(k,n) 这样就可以了 …

【剑指offer】面试题03:数组中重复的数字(java)

在一个长度为 n 的数组 nums 里的所有数字都在 0&#xff5e;n-1 的范围内。数组中某些数字是重复的&#xff0c;但不知道有几个数字重复了&#xff0c;也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1&#xff1a; 输入&#xff1a; [2, 3, 1, 0, 2, …

城市大脑全球标准研究2:如何理解和定义城市大脑?

作者&#xff1a;刘锋城市大脑作为一个新生事物&#xff0c;如何理解和定义反映了人们对这个新事物的理解程度&#xff0c;同时由于城市大脑是一个复杂的智能巨系统&#xff0c;如何理解和定义它对于后续的建设和发展也将产生重大和深远的影响。目前对城市大脑的定义有如下几种…

1036 跟奥巴马一起编程(15 分)

美国总统奥巴马不仅呼吁所有人都学习编程&#xff0c;甚至以身作则编写代码&#xff0c;成为美国历史上首位编写计算机代码的总统。2014 年底&#xff0c;为庆祝“计算机科学教育周”正式启动&#xff0c;奥巴马编写了很简单的计算机代码&#xff1a;在屏幕上画一个正方形。现在…

【剑指offer】面试题04:二维数组中的查找(java)

在一个 n * m 的二维数组中&#xff0c;每一行都按照从左到右递增的顺序排序&#xff0c;每一列都按照从上到下递增的顺序排序。请完成一个函数&#xff0c;输入这样的一个二维数组和一个整数&#xff0c;判断数组中是否含有该整数。 示例: 现有矩阵 matrix 如下&#xff1a; …

Bengio、Hinton的不懈追求——深度学习算法揭示大脑如何学习

来源&#xff1a;AI科技评论编译&#xff1a;Don校对&#xff1a;青暮“如果我们能够揭示大脑的某些学习机制或学习方法&#xff0c;那么人工智能将能迎来进一步的发展&#xff0c;”Bengio如是说。深度学习依赖于精妙设计的算法&#xff0c;一行行精妙绝伦的公式让冰冷的计算机…

linux下的idea的界面问题,错位以及各种...

问题 ’ 方法 主题设置为GTK,多余的点会消失,而且字体也会好很多 转载于:https://www.cnblogs.com/ydymz/p/9595229.html

【剑指offer】面试题05:替换空格(java)

请实现一个函数&#xff0c;把字符串 s 中的每个空格替换成"%20"。 示例 1&#xff1a; 输入&#xff1a;s "We are happy." 输出&#xff1a;"We%20are%20happy." 限制&#xff1a; 0 < s 的长度 < 10000 思路&#xff1a;Java中S…

我们死去后,宇宙还能记住我们吗?

图片来源&#xff1a;Pixabay撰文&#xff1a;约翰霍根&#xff08;John Horgan&#xff09;翻译&#xff1a;常灏杰审校&#xff1a;曾小欢 吴非一些物理学家坚信信息不会消失&#xff0c;甚至在黑洞中也不会消失&#xff0c;但是这一“规律”也许只是一厢情愿而已。我是个强迫…

DataPipeline | PayPal庞姬桦:大数据在小微企业贷款上的运用

庞姬桦女士毕业于北京大学和美国哥伦比亚大学&#xff0c;目前担任PayPal公司消费者风险管理总监&#xff0c;负责通过大数据实现对互联网金融风险的侦测、跟踪、管控和防范。在加入PayPal之前&#xff0c;曾任职于渣打银行&#xff08;中国&#xff09;和美国运通公司&#xf…

【剑指offer】面试题6:从尾到头打印链表(Java)

输入一个链表的头节点&#xff0c;从尾到头反过来返回每个节点的值&#xff08;用数组返回&#xff09;。 示例 1&#xff1a; 输入&#xff1a;head [1,3,2] 输出&#xff1a;[2,3,1] 限制&#xff1a; 0 < 链表长度 < 10000 思路&#xff1a;利用栈 /** * Defi…

H5 与 IOS的爱恨情仇(兼容问题)

1 input 框在ios上存在阴影的问题 input{resize: none;-webkit-appearance: none;box-sizing: border-box;} 2 H5 在ios端滚动的时候卡顿问题&#xff08;在另一人的博客写的&#xff0c;我直接用了方法1&#xff0c;挺好&#xff09; -webkit-overflow-scrolling : touch 但这…

贝尔实验室发布6G通信白皮书

来源&#xff1a;5G重要信息随着5G的广泛部署和落地无线通信网络演进的风向标转向6G合理地预测和构建下一代无线网络的全景是准确把握和引导6G研究方向的前提2021 MWCS期间贝尔实验室发布了《6G通信白皮书》分析生活和工作中&#xff0c;未来的通信演进方向探讨移动通信的变革大…

【剑指offer】面试题09:用两个栈实现队列(Java)

用两个栈实现一个队列。队列的声明如下&#xff0c;请实现它的两个函数 appendTail 和 deleteHead &#xff0c;分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素&#xff0c;deleteHead 操作返回 -1 ) 示例 1&#xff1a; 输入&#xff1a; ["…

GLSL中 Billboard和Point的顶点空间变换

请见我的文章: https://blog.csdn.net/vily_lei/article/details/82459551 转载于:https://www.cnblogs.com/vilyLei/articles/9597742.html

跌宕七十年,日本制造业兴衰「启示录」

作者&#xff1a; 凡夫俗子来源&#xff1a;凡夫俗子财经带着这样的问题&#xff0c;本文将对日本制造业的兴衰历程做一个详细的回顾与反思。在眼下的特殊时期&#xff0c;相信这个与中国一水相隔的国家所经历的种种&#xff0c;会给我们带来很好的启示。一、日本制造是一部技术…

【剑指offer】面试题10- I:斐波那契数列(Java)

写一个函数&#xff0c;输入 n &#xff0c;求斐波那契&#xff08;Fibonacci&#xff09;数列的第 n 项。斐波那契数列的定义如下&#xff1a; F(0) 0, F(1) 1 F(N) F(N - 1) F(N - 2), 其中 N > 1. 斐波那契数列由 0 和 1 开始&#xff0c;之后的斐波那契数就是由之…

Redis高可用详解:持久化技术及方案选择

文章摘自&#xff1a;https://www.cnblogs.com/kismetv/p/9137897.html 前言 在上一篇文章中&#xff0c;介绍了Redis的内存模型&#xff0c;从这篇文章开始&#xff0c;将依次介绍Redis高可用相关的知识——持久化、复制(及读写分离)、哨兵、以及集群。 本文将先说明上述几种技…

联合国首席AI顾问专访:我们期望AI应该是完美的,但这永远不会

大数据文摘出品来源&#xff1a;informationweek编译&#xff1a;张大笔茹联合国首席人工智能顾问Neil Sahota分享其对联合国重大AI项目以及当今AI面临的主要挑战的看法。人工智能在各个行业和政府中广泛使用的例子一度存在于科幻小说中。但如今&#xff0c;我们不必担心像许多…