Лия0211
03.02.2022 23:06

программа на 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();
}
}
}

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
Panda2004s
10.12.2020 00:37
Из условия Фано следует, что в префиксном неравномерном двоичном коде, предусматривающем однозначное декодирование, ни одно кодовое слово не может быть началом другого. 

Таким образом, оставшиеся три кода не могут быть началом кода буквы Б, и началами кодов друг друга.

То есть коды 0 и 00 отпадают сразу, т.к. это начала буквы Б.

Если предположить, что один из кодов равен 1, и что нам нужны кратчайшие коды, значит оставшиеся коды могут быть только 01 и 011.

Если предположить, что коды двузначны, тогда кодами могут быть 01, 10 и 11.

В первом случае суммарная длина кодов равна 1+2+3+3 = 9, во втором случае - 2+2+2+3 = 9.

Оба варианта подходят, кратчайшая суммарная длина - 9
0,0(0 оценок)
Ответ:
you78
10.12.2020 00:37
Из условия Фано следует, что в префиксном неравномерном двоичном коде, предусматривающем однозначное декодирование, ни одно кодовое слово не может быть началом другого. 

Таким образом, оставшиеся три кода не могут быть началом кода буквы Б, и началами кодов друг друга.

То есть коды 0 и 00 отпадают сразу, т.к. это начала буквы Б.

Если предположить, что один из кодов равен 1, и что нам нужны кратчайшие коды, значит оставшиеся коды могут быть только 01 и 011.

Если предположить, что коды двузначны, тогда кодами могут быть 01, 10 и 11.

В первом случае суммарная длина кодов равна 1+2+3+3 = 9, во втором случае - 2+2+2+3 = 9.

Оба варианта подходят, кратчайшая суммарная длина - 9
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота