题目描述:

如上图所示,由正整数1, 2, 3, ...组成了一棵无限大的二叉树。从某一个结点到根结点(编号是1 的结点)都有一条唯一的路径,比如从10 到根结点的路径是(10, 5, 2, 1),从4 到根结点的路径是(4, 2, 1),从该结点到根结点的路径上的所有结点称为该结点的祖先。现在的问题就是,给定x 和y,求x和y的最近共同祖先,比如,10和4最近共同祖先是2,10和5的最近共同祖先是5。
定义递归函数
int common(int x, int y)
{
//如果x==y, return x;
//如果x>y,求x/2与y的共同
这篇博客介绍了如何在无限大的二叉树中找到两个节点的最近共同祖先。通过递归函数`common(int x, int y)`实现,当x等于y时返回x,否则根据x和y的大小关系分别回溯它们的一半节点来寻找共同祖先。样例输入10 4,输出2,表示10和4的最近共同祖先是2。博客还提到了完全二叉树的特性以及节点关系。"
84335556,5094673,Java 8 函数式编程详解:接口与实践,"['函数式编程', 'Java', '编程实践']
订阅专栏 解锁全文
488

被折叠的 条评论
为什么被折叠?



