1.题目链接:https://www.nowcoder.com/questionTerminal/70e00e490b454006976c1fdf47f155d9
2.题目
将一棵无穷大满二叉树的结点按根结点一层一层地从左往右编号,根结点编号为1。现给定a,b为两个结点。设计一个算法,返回a、b最近的公共祖先的编号。注意其祖先也可能是结点本身。
测试样例:
2,3
返回:1
3.代码
class LCA {
public:
int getLCA(int a, int b) {
// write code here
//根据题意可得:该树是一颗满二叉树
//满二叉树的子节点与父节点之间的关系为root=child/2
//每次都让大的那个数除2 直到两数相等
while(a!=b)
{
if(a>b)
a/=2;
else
b/=2;
}
return a;
}
}
};