Программа на c#
для класса searchtree из примера добавьте следующие поля, свойства и методы:
закрытое поле count, подсчитывающее количество вершин дерева;
свойство count, возвращающее количество вершин дерева;
метод isempty, возвращающий true, если дерево пусто, или false в противном случае;
метод clear, удаляющий дерево.
using system;
using system.collections.generic;
using system.text;
namespace binarytrees
{
// двоичное дерево поиска
public class searchtree
{
// узел дерева
class node
{
public double value { get; set; } // хранимое в узле значение
public node left { get; set; } // ссылка на левое поддерево
public node right { get; set; } // ссылка на правое поддерево
// конструктор (создает узел дерева)
public node(double val)
{
value = val;
left = right = null;
}
}
node root = null; // ссылка на корень дерева
// добавление элемента в дерево
public void add(double val)
{
if (root == null)
{
root = new node(val);
return;
}
node current = root; // ссылка на текущий узел
while (true)
{
if (val < current.value)
{
if (current.left == null)
{
current.left = new node(val);
return;
}
else
current = current.left;
}
else
{
if (current.right == null)
{
current.right = new node(val);
return;
}
else
current = current.right;
}
}
}
// поиск элемента
public bool search(double val)
{
if (root == null)
return false;
node current = root; // ссылка на текущий узел
while (true)
{
if (val < current.value)
{
if (current.left == null)
return false;
else
current = current.left;
}
else if (val > current.value)
{
if (current.right == null)
return false;
else
current = current.right;
}
else
return true;
}
}
// симметричный обход всего дерева
public void inorderwalk()
{
inorderwalk(root);
console.writeline();
}
// симметричный обход поддерева t
void inorderwalk(node t)
{
if (t ! = null)
{
inorderwalk(t.left);
console.write(t.value + " ");
inorderwalk(t.right);
}
}
}
class program
{
static void main(string[] args)
{
searchtree tree = new searchtree();
tree.add(4);
tree.add(2);
tree.add(0);
tree.add(3);
tree.add(6);
tree.add(5);
tree.add(9);
console.writeline("симметричный обход дерева: ");
tree.inorderwalk();
for (double x= 0; x < 10; x++)
{
if (tree.search(x))
console.writeline("элемент {0} содержится в дереве", x);
else
console.writeline("элемент {0} отсутствует в дереве", x);
}
console.readline();
}
}
}
152
426
Ответы на вопрос:
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
АкадемеG10.06.2023 01:39
-
матвей46731.05.2021 02:39
-
Карташова11124.06.2023 07:27
-
школоллло13.05.2023 23:39
-
zavya5526.11.2021 05:54
-
анна224609.03.2021 18:57
-
tamilatumasheva26.12.2020 20:17
-
Dillzy14.04.2022 21:47
-
Dzhemre6923.02.2020 18:22
-
никуля4002.07.2020 12:56
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.