简单递归找最近公共父节点

来源:互联网 发布:网络平台运营成本预算 编辑:程序博客网 时间:2024/06/15 05:26

这里写图片描述
如上图,我们要求任意两个点的最接近的公共的父节点,比如:9和11的最近的公共父节点是2。
intput:
10 4
output:
2
分析:我们可以从所给的两个节点的开始向上找,一直找到他们相遇,选择每次让比较大的数字向上找(大的数字在同层,或者更深层。)
所以 递归可以写成


int rec(int x,int y){    if(x==y)//找到了公共父节点        return x;    else if(x>y)//x节点更深,寻找x的上一个节点        return rec(x/2,y);    else        return rec(x,y/2);}
1 0
原创粉丝点击