当前位置:网站首页>【Day_11 0506】 最近公共祖先
【Day_11 0506】 最近公共祖先
2022-08-01 17:40:00 【安河桥畔】
最近公共祖先
题目来源
牛客网: 最近公共祖先
题目描述
将一棵无穷大满二叉树的结点按根结点一层一层地从左往右编号,根结点编号为1。现给定a,b为两个结点。设计一个算法,返回a、b最近的公共祖先的编号。注意其祖先也可能是结点本身。
示例1
输入
2 3
返回
1
思路分析
编号为整型,整型除法计算会舍去小数位,所以每个节点的父节点编号等于子节点编号除以二,对两个节点中编号较大的节点除2,直到两个节点相同为止。
如图演示编号为15和5找到最近祖先的过程:
代码展示
class LCA {
public:
int getLCA(int a, int b) {
while(a!=b)
{
if(a>b)
{
a/=2;
}
else
{
b/=2;
}
}
return b;
}
};
边栏推荐
猜你喜欢
随机推荐
QPalette调色板、框架色彩填充
Live tonight!
完美指南|如何使用 ODBC 进行无代理 Oracle 数据库监控?
The anxiety of the post-90s was cured by the vegetable market
不需要写代码,快速批量修改文件夹中图片的格式
吴恩达机器学习课后习题——kmeans
zabbix部署和简单使用
【二叉树】奇偶树
使用设备树时对应的驱动编程
面经汇总-社招-6年
【R语言】批量重命名文件
GRUB2的零日漏洞补丁现已推出
ROS2系列知识(6):Action服务概念
金仓数据库 OCCI迁移指南(2. 概述)
C语言:表达式求值详解
ROS2系列知识(7):用rqt_console查看日志logs
中信证券是国内十大券商吗?怎么开户安全?
解决MySQL插入不了中文数据问题
ROS2支持技术:DDS简述
Topology零部件拆解3D可视化解决方案