import java.util.*;
public class Solution {
    /**
     * 
     * @param k int整型 表示完全k叉树的叉数k
     * @param a int整型一维数组 表示这棵完全k叉树的Dfs遍历序列的结点编号
     * @return long长整型
     */
   public long tree6 (int k, int[] a) {
        int n =a.length;
        dfs(k,a,0);
        return res;
    }
    int dfsOrder =0;
    long res= 0;
    //使用bfs序来判断是否越界 ,bfs序可能超过int最大值,要用long
   private void dfs(int k, int[] a, long bfsOrder) {
        // TODO Auto-generated method stub
        if(dfsOrder>=a.length) return;
        int parent=a[dfsOrder];

        for(int i=1;i<=k;i++) {
            if(bfsOrder*k+i<a.length) {
                dfsOrder++;
                res=res+(parent^a[dfsOrder]);
                dfs(k, a, bfsOrder*k+i);
            }
            else
                break;
        }    
    }
}

用bfsOrder来判断是否有子树,dfsOrder来深度遍历