// строим дерево private void CreateTree() { // это пара данных по которым будет делиться дерево (содержит заголовок и значение) entityClf.Para minPara = new entityClf.Para(); string str = ""; double Q, L, R; float G, pastG = 23232323232323; // Проверить какие пары в G проходят проверку // цикл по заголовкам (Header) кроме последнего, последний это заголовок результатов for (int index = 0; index < headers.Count - 1; index++) { entity.Header header = headers[index]; //str += header.GetNameHeader() + " = {"; // цикл по данным в заголовке IEnumerable <string> data = this.data[index].DataInColumn().Distinct(); { foreach (string dat in data) { Left(index, dat); Right(index, dat); G = ((leftresuts.Count / resuts.Count) * H(leftresuts)) + ((rightresuts.Count / resuts.Count) * H(rightresuts)); if (pastG > G) { pastG = G; minPara.SetIdHeader(index); minPara.SetZnach(dat); } //str += dat + " "; } } //str += "}\n"; } //MessageBox.Show("минимум там где G("+ minPara.GetIdHeader()+", "+minPara.GetZnach()+")"); // записываем результат в грид, что бы было что возвращать gridWithRows.Children.Add(DrawNode("Где " + headers[minPara.GetIdHeader()].GetNameHeader() + " > " + minPara.GetZnach())); // записываем в левый и правый данные Left(minPara.GetIdHeader(), minPara.GetZnach()); Right(minPara.GetIdHeader(), minPara.GetZnach()); // создаём левую ветку //ClfTree clfTreeLeft = new ClfTree(headers, leftdata, leftresuts); //clfTreeLeft.GetGridWithRows().SetValue(Grid.ColumnProperty, 0); //gridWithColumns.Children.Add(clfTreeLeft.GetGridWithRows()); //// правая ветка //ClfTree clfTreeRight = new ClfTree(headers, rightdata, rightresuts); //clfTreeRight.GetGridWithRows().SetValue(Grid.ColumnProperty, 1); //gridWithColumns.Children.Add(clfTreeRight.GetGridWithRows()); }