public HashTree Build() { var reader = new FileReader(); int[][] dataSet = reader.Read("retail.dat.txt"); //int[][] dataSet = { new[] {1, 2, 3, 4, 5, 6}, new[] {4 ,5}, new[] {5, 6}, new[] {1}, new[] {1, 5}}; var jobs = new Task[K]; _forest = new HashTree[K]; for (int i = 0; i < K; i++) { int j = i; var job = new Task(() => Job(dataSet, j)); jobs[i] = job; job.Start(); } Task.WaitAll(jobs); HashTree hashTree = _forest[0]; foreach (var tree in _forest.Skip(1)) { hashTree.Merge(tree); } WriteLine("Tree properly saved."); return(hashTree); }