二叉树【北京大学】

mac2022-06-30  22

牛客网题目链接 求一颗完全二叉树两个节点的最近公共祖先

题解

先把一个节点到根节点的路径存起来,然后计算另一个节点到根节点的路径,没到一个祖先节点查一下另一个节点是否存在,若存在则一定是最近公共祖先。

#include <iostream> #include <vector> #include <string> #include <cmath> #include <algorithm> #include <queue> #include <cstdio> #include <cctype> #include <unordered_map> #include <map> using namespace std; const int N = 105; typedef pair<int, string> PII; int main() { int a, b; while(cin>>a>>b){ unordered_map<int, bool> mp; while(a != 0){ mp[a] = true; a >>= 1; } int flag = 0; while(b != 0){ if(mp[b]) { cout<<b<<endl; break; } b >>= 1; } } return 0; }
最新回复(0)