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