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来深度遍历

京公网安备 11010502036488号