|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.12.2016, 13:12 | #1 |
Пользователь
Регистрация: 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. Заранее спасибо |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Бинарное дерево | 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 |