Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как пофиксить при вводе в консоли переход на новую строку при простом нажатии клавиши "Enter"? https://www.cyberforum.ru/ cpp-beginners/ thread2807189.html
При пустом вводе в консоли (т.е просто при нажатии клавиши "Enter" мигающий курсор переходит на новую строку) До нажатия клавиши Enter: ...
В чём ошибка или подскажите как сделать правильно C++
Составить программу вычисления произведения целых чисел, кратных 3, в интервале от 30 до 150. #include <iostream> #include <math.h> using namespace std; int main() { long int x, y; x = 30;...
C++ String, удалить все согласные буквы Введите предложение из нескольких слов.Удалить из него все согласные. https://www.cyberforum.ru/ cpp-beginners/ thread2807170.html C++ Подсчитать сколько раз встречается «fa» в строке Задали сделать и с функциями и без c++( за раннее спасибо ) 18. Подсчитайте, сколько раз встречается «fa» в строке S0…Sn и замените на «do» те,которые встречаются до первой буквы «с» , и... https://www.cyberforum.ru/ cpp-beginners/ thread2807166.html
Перемещение указателя функцией WriteFile C++
Как забить настройки в эту функцию чтобы она не просто писала а переставила указатель на нужный байт. Пример есть строка до 048351666 нужно получить 0483516de
C++ Курсовая работа https://www.cyberforum.ru/ cpp-beginners/ thread2807159.html
Может у кого-то есть курсовая работа на тему "Внешняя сортировка. Каскадная сортировка"
C++ Элементы массива у которых один из индексов чётный с модулем значения больше 10 уменьшить на 3 https://www.cyberforum.ru/ cpp-beginners/ thread2807157.html
Условие задачи -> Ввести двумерный массив NxM . Все элементы, стоящие на позициях у которых один из индексов чётный, с модулем значения больше 10 уменьшить на 3. Массив вывести до и после...
Вычисление функции рядом Тейлора C++
Здравствуйте! Есть функция, скрин ниже. Нужно вычислить её, делал примерно другую на C#, но не особо понял шаги. for (double x = x1; x <= x2; x += dx) { double z =...
C++ Клиент не принимает данные от сервера https://www.cyberforum.ru/ cpp-beginners/ thread2807147.html
Здравствуйте! Игра, где надо угадывать числа за определённое кол-во попыток. Есть сетевая игра, но, когда я запускаю две программы одного проекта(сервер и клиент), то почему-то клиент не принимает...
C++ Cоздайте новую очередь чисел, которые больше геометрической середины https://www.cyberforum.ru/ cpp-beginners/ thread2807129.html
Есть числа в одной очереди, найдите геометрическую середину и создайте новую очередь чисел, которые больше геометрической середины
C++ Объединение программ
не знаю как объединить эти 4 программы, в программировании как камень в воде. #include <iostream> #include <fstream> using namespace std; int main() { setlocale(LC_ALL, "rus"); ...
C++ Найти вещественное число по числу, введенному с клавиатуры,и после него добавить новое число Нужно найти найти вещественное число по числу, введенному с клавиатуры,и после него добавить новое число. Тип списка: двунаправленный Элемент списка: вещественно https://www.cyberforum.ru/ cpp-beginners/ thread2807082.html
0 / 0 / 0
Регистрация: 04.01.2021
Сообщений: 5
0

Добавление в бинарное дерево узла - C++ - Ответ 15384377

01.04.2021, 21:23. Показов 3267. Ответов 1
Метки (Все метки)

Имеется узел бинарного дерева:

C++
1
2
3
4
5
6
7
8
9
10
11
struct Node
 
{
 
    char name[20];  //имя узла
 
    Node * left;        //левая ветвь
 
    Node * right;       //правая ветвь
 
}
Определить следующие функции:

C++
1
2
3
4
5
Node* AddNode(Node* node, char* name); // добавление нового узла в дерево (если у узла отсутствует левая ветвь, то узел добавляется слева, иначе, если отсутствует правая ветвь, то узел добавляется справа, иначе узел не добавляется). Функция должна возвращать указатель на добавленный узел или 0;
 
void DelLeftNode(Node* node); void DelRightNode(Node* node); // удаление левых и правых поддеревьев;
 
void PrintTree(Node* node); // рекурсивная функция вывода бинарного дерева на экран.
Вот что сейчас есть у меня:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include "stdafx.h"
#include "conio.h"
#include "iostream"
#include <stdlib.h>
 
using namespace System;
using namespace std;
 
 
struct Node
{
    char name[20];  //имя узла
    Node * left;        //левая ветвь
    Node * right;       //правая ветвь 
};
 
Node* AddNode(Node* node, char* name)// добавление нового узла в дерево (если у узла отсутствует левая ветвь, то узел добавляется слева, иначе, если отсутствует правая ветвь, то узел добавляется справа, иначе узел не добавляется). Функция должна возвращать указатель на добавленный узел или 0;
{
        if (NULL == node) //если дерева нет, тогда  
        {
            node = new Node; // выделяем память под звено дерева
            node->name[20] = name[20]; //записываем данные в звено
            node->left = NULL; //подзвенья инициализируем пустотой
            node->right = NULL; //подзвенья инициализируем пустотой
        }
 
        if (node->left == NULL) //проверка: если левая ветвь узла Node пустая, значит добавляем туда
        {
            node->left = new Node;
            node->left->left = node->left->right = NULL;
            node->left->name[20]=name[20];
        }
 
        if (node->right == NULL) //проверка: если правая ветвь узла Node пустая, значит добавляем туда
        {
            node->right = new Node;
            node->right->left = node->right->right = NULL;
            node->right->name[20]=name[20];
        }
        return node;
}
 
void PrintTree(Node* node) // рекурсивная функция вывода бинарного дерева на экран.
{
    if (node != NULL) //Пока не встретится пустое звено
    {
        PrintTree(node->left); //рекурсивная функция для вывода левого поддерева
        cout << node->name[20]; //отображаем корень дерева
        PrintTree(node->right); //рекурсивная функция для вывода правого поддерева
    }
}
 
 
int main()
{
    Node* Tree; //создаем указатель, тип которого = звено дерева и инициализируем его пустотой;
    char* n[20];
    for (int i = 0; i < 3; i++)
    {
        printf("Vvedite name uzla: - \n");
        scanf("%c", &n[20]);
        AddNode(Tree, n[20]);
    }
    PrintTree(Tree);
    getch();
}
Т.е. сначала я создаю этот узел, который дан по условию: даю ему имя, а затем его правую и левую ветви обнуляю. Но задача не работает. Ошибка тут:

C++
1
if (node->left == NULL)
Ссылка на объект не указывает на экземпляр объекта. Как исправить? Заранее огромное спасибо.

Вернуться к обсуждению:
Добавление в бинарное дерево узла C++
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.04.2021, 21:23
Готовые ответы и решения:

Добавление узла в бинарное дерево с++
Не понимаю чего я не понимаю... Функция добавления узла в бинарное дерево работает неправильно....

Бинарное дерево из слов и удаление узла
Ребят нужно создать дерево где пользователь вводит слова, они записываются в дерево, а потом вводит...

Бинарное дерево, поиск номера узла по элементу
#include &lt;iostream&gt; #include &lt;algorithm&gt; #include &lt;string&gt; #include &lt;map&gt; #include &lt;iomanip&gt;...

Бинарное дерево, номер узла указанного элемента
#include &lt;iostream&gt; #include &lt;algorithm&gt; #include &lt;string&gt; #include &lt;map&gt; #include &lt;iomanip&gt;...

1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.04.2021, 21:23
Помогаю со студенческими работами здесь

Исходное бинарное дерево превратить в бинарное дерево поиска, при этом сохранив его структуру
Помогите, не могу понять!( Нужно исходное бинарное дерево превратить в бинарное дерево поиска, при...

Добавление элементов бинарное дерево
Всем добрый день, не выручит кто нибудь алгоритмом который заполняет двоичное дерево поиска

Добавление элемента в бинарное дерево
Добрый вечер, помогите написать метод добавления в бинарное дерево. Я написал вот такой код: class...

Бинарное дерево подклассов основного класса-узла. Доступ к подклассам по указателю - объекту класса-родителя
Короче, необходимо сделать бинарное дерево, решающее арифметическое выражение, предварительно туда...

Добавление элемента в обычное бинарное дерево
Доброго времени суток, форумчане! Начинаю реализовывать бинарное дерево (обычное, НЕ поиска) и...

Бинарное дерево поиска (удаление, добавление элемента)
Задачи В Бинарном дереве поиска 1)введено с клавиатуры значение, если существует узел с таким...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru