二叉树
二叉树
http://www.nowcoder.com/questionTerminal/5b80ab166efa4551844657603227caeb
思路
如果是普通的二叉树,求公共父节点的话,就是遍历某个根节点的左右子树,看看这两个节点是否在一棵子树上,在的话就继续遍历子树,不在的话就直接返回根节点。
而这道题,很容易看出来一个节点 i 的父节点就是 i/2,那就很简单了,不断除以 2 直到相等就好了。
#include<iostream>
using namespace std;
int main(){
int x, y;
while(cin >> x >> y){
while(x != y){
if(x > y) x /= 2;
else y /= 2;
}
cout << x << endl;
}
return 0;
} 算法题解 文章被收录于专栏
不定期更新一些算法题解,有什么问题可以随时留言~

查看12道真题和解析