Tree 2题解
Tree II
https://ac.nowcoder.com/acm/contest/9223/C
用队列来实现BFS遍历每一个结点的子结点,推出k叉树第t个结点的子结点的公式为:kt-k+2到kt+1;
最后如果查询到第n个点直接return;
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * @param k int整型 表示完全k叉树的叉数k * @param a int整型vector 表示这棵完全k叉树的Bfs遍历序列的结点编号 * @return long长整型 */ #define ll long long long long tree2(int k, vector<int>& a) { // write code here ll sum=0; queue<ll>q; q.push(1); while(q.size()) { ll t=q.front(); q.pop(); for(int i=t*k-k+2;i<=k*t+1&&i<=a.size();i++) { ll ans=a[i-1]^a[t-1]; sum+=ans; q.push(i); } } return sum; } };