Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2016, 13:12   #1
polsovatel
Пользователь
 
Регистрация: 21.09.2016
Сообщений: 13
По умолчанию Вставка элемента в бинарное дерево

Добрый день. Столкнулся с проблемой. Не получается вставить элемент в бинарное дерево так , чтобы выполнялись все условия бинарного дерева.
Вот код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;

namespace Pyramid
{
public class Tree
{
List<int> list = new List<int>() { 0, 5, 3, 10, 2, 6, 8, 15 };
int[] arrayAnswer = new int[8];
public bool IterativeSearch(int X)
{
int i = 1;
while (X != list[i] || i > list.Count)
{
if (X < list[i])
i = 2 * i;
if (X > list[i])
i = 2 * i + 1;
}
if (X == list[i])
return true;
return false;
}
public bool RecursionSearch(int X, int i)
{
if (i > list.Count)
return false;
if (list[i] == X)
return true;
if (X < list[i])
return RecursionSearch(X, 2 * i);
if (X > list[i])
return RecursionSearch(X, 2 * i + 1);
return false;
}

public void Add(int X)
{
list.Add(X);
list.Sort();
}

public int[] Balance(int p, int r, int i)
{
int middle1 = (p + r) / 2;
int middle2 = (p + r) / 2;
if (i > list.Count)
return arrayAnswer;


if (i % 2 == 1)
{
arrayAnswer[i] = list[middle1];
Balance(p, middle1, i + 1);
}
if (i % 2 == 0)
{
arrayAnswer[i] = list[middle1];
Balance(p, middle1, i + 1);
}
return arrayAnswer;
}


}

public class Program
{
static void Main(string[] args)
{
Stopwatch time1 = new Stopwatch();
Stopwatch time2 = new Stopwatch();
int X = 9;

Tree tr = new Tree();
tr.Add(9);
tr.Balance(1, 8, 1);
//if (tr.IterativeSearch(X))
// Console.WriteLine("Yes");
//else if (!tr.IterativeSearch(X))
// Console.WriteLine("No");

if (tr.RecursionSearch(X, 1))
Console.WriteLine("Yes");
else if (!tr.RecursionSearch(X, 1))
Console.WriteLine("No");

/*
time1.Start();
IterativeSearch(array, X);
time1.Stop();

time2.Start();
RecursionSearch(array, X, 1);
time2.Stop();

if (IterativeSearch(array, X))
Console.WriteLine("Yes");
else if (!IterativeSearch(array, X))
Console.WriteLine("No");
Console.WriteLine(time1.ElapsedTick s);

if (RecursionSearch(array, X, 1))
Console.WriteLine("Yes");
else if (!RecursionSearch(array, X, 1))
Console.WriteLine("No");
Console.WriteLine(time2.ElapsedTick s);
*/
Console.ReadKey();
}
}
}
В методе Add я добавляю элемент в список. А в методе Balance не получается сбалансировать дерево. Помогите с методом Balance. Заранее спасибо
polsovatel вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Бинарное дерево eppi Общие вопросы C/C++ 1 16.06.2015 12:11
бинарное дерево на C++ gulec Помощь студентам 0 08.05.2013 19:39
с++ Бинарное дерево tzaf Помощь студентам 0 06.05.2013 21:19
Бинарное дерево tzaf Общие вопросы C/C++ 0 06.05.2013 21:17
бинарное дерево С++ mego4el Помощь студентам 0 15.03.2011 20:47