|
1 / 1 / 1
Регистрация: 28.11.2010
Сообщений: 15
|
||||||
Бинарное дерево10.04.2011, 22:06. Показов 74409. Ответов 9
Метки нет (Все метки)
мне дана такая задача: Напишите программу, реализующую работу бинарного дерева. Напишите функции для добавления/удаления элемента дерева, проверки пустоты дерева, подсчета числа элементов дерева, очистки дерева, печати дерева, поиска элемента в дереве.
Продемонстрируйте работу функции в программе. я не знаю как сделать бинарное дерево простейшее. например
0
|
||||||
| 10.04.2011, 22:06 | |
|
Ответы с готовыми решениями:
9
Преобразовать идеальное бинарное дерево в бинарное дерево поиска Бинарное дерево: как происходит добавления элемента в дерево с двумя параметрами Бинарное дерево |
|
11 / 11 / 2
Регистрация: 12.02.2011
Сообщений: 88
|
||||||||||||||||
| 13.04.2011, 11:16 | ||||||||||||||||
Сообщение было отмечено как решение
Решение
вот дерево элементов типа string. Есть добавление, поиск, подсчет (используется в добавлении), отображение в строку, очистка и проверка пустоты. над удалением пока сам ломаю голову, хотя уже есть мысли.
вот еще удаление. оно работает. но правильный ли это способ - не знаю...
8
|
||||||||||||||||
|
29 / 29 / 8
Регистрация: 16.10.2012
Сообщений: 170
|
|
| 06.05.2013, 13:52 | |
|
keetotko , в вашем коде можно добавить только 6 элементов , как увеличить количество добавляемых элементов ?
0
|
|
|
11 / 11 / 2
Регистрация: 12.02.2011
Сообщений: 88
|
|
| 07.05.2013, 18:30 | |
|
0
|
|
|
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
|
|
| 20.10.2013, 13:41 | |
|
0
|
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|
| 20.10.2013, 13:49 | |
Сообщение было отмечено Элд Хасп как решение
Решение
Когда-то давно накалякал на коленке: Необходимо реализовать дерево и его обход в симметричном, прямом и обратном порядке
3
|
|
|
0 / 0 / 0
Регистрация: 08.05.2018
Сообщений: 16
|
||||||
| 03.09.2019, 14:29 | ||||||
0
|
||||||
| 03.09.2019, 17:01 | ||||||
|
Да, человек я не из ленивых
Добавлено через 6 секунд
2
|
||||||
|
0 / 0 / 0
Регистрация: 09.10.2019
Сообщений: 16
|
||
| 11.05.2020, 16:07 | ||
|
Добавлено через 2 минуты Задача вообще реализовать хафмана в форме, но когда дерево есть это уже вопрос куда меньшего времени
0
|
||
|
2 / 2 / 0
Регистрация: 26.09.2019
Сообщений: 30
|
|
| 17.11.2021, 18:08 | |
|
Masson1848, Помогите пожалуйста удалить элементы 41, 65, 27 и найти по ключу 69, 33, 60 , min.
using System; namespace Test { class Program { static void Main(string[] args) { TreeNode tree = new TreeNode(); tree.Root = tree.AddNode(41, tree.Root); tree.Root = tree.AddNode(27, tree.Root); tree.Root = tree.AddNode(44, tree.Root); tree.Root = tree.AddNode(13, tree.Root); tree.Root = tree.AddNode(17, tree.Root); tree.Root = tree.AddNode(37, tree.Root); tree.Root = tree.AddNode(65, tree.Root); tree.Root = tree.AddNode(33, tree.Root); tree.Root = tree.AddNode(40, tree.Root); tree.Root = tree.AddNode(84, tree.Root); tree.Root = tree.AddNode(59, tree.Root); tree.Root = tree.AddNode(69, tree.Root); tree.Root = tree.AddNode(7, tree.Root); tree.Root = tree.AddNode(60, tree.Root); tree.Root = tree.AddNode(67, tree.Root); tree.PrintTree(Console.WindowWidth / 2, 0, tree.Root); Console.SetCursorPosition(0, 25); Console.Write("Сумма елементов : "); Console.WriteLine(tree.SummaElements(tre e.Root)); Console.Write("К-во елементов : "); Console.WriteLine(tree.CountElements(tre e.Root)); Console.ReadKey(); } } public class TreeNode { private Node _root; public Node Root { get => _root; set => _root = value; } public Node AddNode(int inputDataNode, Node root) { if (root == null) { root = new Node(inputDataNode); } else { if (inputDataNode < root.Data) { root.Left = AddNode(inputDataNode, root.Left); } else { root.Right = AddNode(inputDataNode, root.Right); } } return root; } public Node FindElement(int findData, Node root) { if (root == null || findData == root.Data) return root; else if (root.Data < findData) return FindElement(findData, root.Left); else return FindElement(findData, root.Right); } public Node Minimum(Node root) { if (root != null) { if (root.Left != null) root = Minimum(root.Left); } return root; } public Node DeleteNode(int deleteData, Node root) { if (root == null) return root; if (deleteData < root.Data) { root.Left = DeleteNode(deleteData, root.Left); } else if (deleteData > root.Data) { root.Right = DeleteNode(deleteData, root.Right); } else if (root.Left != null && root.Right != null) { root.Data = Minimum(root.Right).Data; root.Right = DeleteNode(root.Data, root.Right); } else if (root.Left != null) { return root.Left; } else { return root.Right; } return root; } public void PrintTree(int x, int y, Node root, int delta = 0) { if (root != null) { if (delta == 0) delta = x / 2; Console.SetCursorPosition(x, y); Console.Write(root.Data); PrintTree(x - delta, y + 3, root.Left, delta / 2); PrintTree(x + delta, y + 3, root.Right, delta / 2); } } public void ClearTree() { _root = null; } public int CountElements(Node root) { if (root == null) return 0; else { int count = 0; count += CountElements(root.Left); count += CountElements(root.Right); return count + 1; } } public int SummaElements(Node root) { if (root == null) return 0; else { int count = 0; count += SummaElements(root.Left); count += SummaElements(root.Right); return count + root.Data; } } public bool IsEmpty() { return _root == null ? true : false; } } public class Node { private int _data; private Node _left; private Node _right; public Node() { } public Node(int inputDataNode) { Data = inputDataNode; } public Node(int data, Node left, Node right) { Data = data; Left = left; Right = right; } public int Data { get => _data; set => _data = value; } public Node Left { get => _left; set => _left = value; } public Test.Node Right { get => _right; set => _right = value; } } }
0
|
|
| 17.11.2021, 18:08 | |
|
Помогаю со студенческими работами здесь
10
Бинарное дерево
Бинарное дерево Бинарное дерево C#
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|