已知每个节点的子节点数,bfs遍历即可。

class Solution {
typedef long long ll;
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * @param k int整型 表示完全k叉树的叉数k
     * @param a int整型vector 表示这棵完全k叉树的Bfs遍历序列的结点编号
     * @return long长整型
     */
    ll sum = 0;
    void bfs(vector<int> &a, int k) {
        queue<ll> q;
        q.push(a[0]);
        int s = 1;
        while(!q.empty()) {
            ll ss = q.front();
            q.pop();
            if(a.size() - k > s) {
                for(int i = s; i <= s + k - 1; i++) {
                    sum += ss^a[i];
                    q.push(a[i]);
                }
                s += k;
            }
            else {
                for(int i = s; i < a.size(); i++)
                    sum += ss^a[i];
                break;
            }
        }
    }
    long long tree2(int k, vector<int>& a) {
        bfs(a, k);
        return sum;
    }
};