Форум программистов, компьютерный форум CyberForum.ru

Написать класс, описывающий дерево - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ как поменять слова местами в массиве типа char? http://www.cyberforum.ru/cpp-beginners/thread187025.html
нужно поменять введенный текс в массиве типа char так, чтобы менялись местами два соседних слова.то есть первое со вторым .третье с четвертым и так далее...
C++ Дружественная функция У меня есть класс, подсчитывающий количество равносторонних треугольников в заданном множестве точек на плоскости. Подскажите, пожалуйста, почему не работает дружественная функция setK? (Ошибок компилятор не выдаёт, но функция не работает) #include <iostream.h> #include <math.h> int const n=5; class Triangle {private: friend void setK (Triangle,int); int x; http://www.cyberforum.ru/cpp-beginners/thread187012.html
Разработать функцию Parse(s,t) C++
Разработать функцию, которая выполняет обработку символьной строки. При реализации функции запрещается пользоваться функциями библиотек языка C. Функция - Parse(s,t). Назначение - разделение строки s на две части: до первого вхождения символа t и после него.
C++ Как возвести число в степень
Как возвести число в степень ???
C++ цикл for... http://www.cyberforum.ru/cpp-beginners/thread186983.html
Я написал программу: #include "stdafx.h" #include <iostream> #include <conio.h> using namespace std; void main (void) { int c; for(c=0;c<=100;c+=5);
C++ Ввести строку и слово, удалить все вхождения слова и вывести строку помогите с лабой! Добавлено через 22 секунды через <stdio.h> подробнее

Показать сообщение отдельно
volovzi
267 / 169 / 8
Регистрация: 14.03.2010
Сообщений: 501
06.12.2010, 02:40     Написать класс, описывающий дерево
velodro, проблема в том, что поиск возвращает результат только в том случае, если m_value == v, а в остальных случаях не возвращает ничего.

Должно быть примерно так:
C++
1
2
3
4
5
6
binary_tree_node * f (int v) {
        if (v == m_value) return this;
        else if (v < m_value && m_left != 0) return m_left->f(v);
        else if (v > m_value && m_right != 0) return m_right->f(v);
        else return 0;
}
Замечание, не относящееся к деревьям: ты неправильно используешь оператор "new". Он используется только тогда, когда тебе нужно выделить память под новый объект. И потом ты обязан удалить выделенную память оператором "delete". Если же ты используешь указатель как псевдоним другого объекта (как в функции "ff"), то выделять память не нужно. Пиши просто
C++
1
 binary_tree_node * p = f(v);
Добавлено через 5 минут
Я сейчас подумал, и понял, что если ты собираешься удалять узел с помощью найденного указателя на него, то тебе нужно в узле создать дополнительную переменную, в которой будет храниться указатель на родительский узел. Иначе просто не получится.

Добавлено через 15 минут
Подумал ещё раз.
Нет, всё-таки удалять узел надо из более высокого уровня, т.к. если узел не имеет родительского, то удалить сам себя не сможет.
 
Текущее время: 11:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru