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

Функция удаления листа (или ветки) бинарного дерева - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Редактирование записи и печать односвязного списка http://www.cyberforum.ru/cpp-beginners/thread1179801.html
Задание звучит так: Разработать приложение, работающее с односвязным списком, содержащим данные о питомцах зоопарка. Элементом списка является структура, содержащая не менее 4-ех элементов. Выполнить добавление, удаление, редактирование элемента списка, распечатку всего списка. Не могу понять как сделать редактирование записи в списке и еще печать. Буду очень благодарна за помощь. #include...
C++ Решение систем линейных уравнений различными методами #include "stdafx.h" #include "iostream" #include "cmath" using namespace std; void input(float**A,float*B,float**C,float**R,int m,int n); float determ(float**A,int n); void Kramer(float**A,float*B,float**C,float*d,int n); void Gauss(float**A,float*B,float**C,float*X,int n); void Matrica(float **A,float*B,float*M,int n); int l_min(int a, int b); http://www.cyberforum.ru/cpp-beginners/thread1179800.html
C++ программа для расчетов
я начал делать но не понял помогите #include<iostream> #include<Windows.h> #include<math.h> using namespace std; void main() { SetConsoleCP(1251); SetConsoleCP(1251);
C++ Ошибки "Unresolved external '__InitVCL' referenced" и "Unresolved external '__ExitVCL' referenced"
Здравствуйте. При компиляции возникают такие ошибки: Unresolved external '__InitVCL' referenced from C:\PROGRAM FILES (X86)\BORLAND\CBUILDER6\LIB\CP32MTI.LIB|crtlvcl Unresolved external '__ExitVCL' referenced from C:\PROGRAM FILES (X86)\BORLAND\CBUILDER6\LIB\CP32MTI.LIB|crtlvcl Сам код программы(класс для работы со временем): Заголовочный файл. // ctime.h #include <iostream.h>
C++ Считывание структуры из бинарного файла http://www.cyberforum.ru/cpp-beginners/thread1179781.html
Привет всем, при считывании структуры одной строкой кода и последующим выводом ее на экран выводятся непонятные символы. подскажите, что делать :( #include <iostream> #include <fstream> #include <string> #include <windows.h> #pragma warning (disable: 996) using namespace std; struct Info {
C++ Найти корень заданного уравнения методом простой итерации с заданной точностью Найти корень заданного уравнения методом простой итерации с заданной точностью. Напомним, что в этом методе нужно уравнение свести к виду x=f(x) и очередное уточнение корня проводится по формуле xn+1 = f(xn) до тех пор, пока |xn+1 – xn| > E, где Е – заданная точность. Рядом с уравнением в скобках указано начальное приближение корня 5х – 8 ln x = 8, (4,32) подробнее

Показать сообщение отдельно
nxexox
0 / 0 / 0
Регистрация: 18.05.2014
Сообщений: 48
18.05.2014, 16:32     Функция удаления листа (или ветки) бинарного дерева
Здравствуйте программисты! Учусь на первом курсе. Возникли проблемы с разработкой функции удаления ветки листа или корня из дерева. Т.е. удаление из дерева по ключу любого элемента. код не работает. три дня сижу запарился с ней. Помогите пожалуйста
вот код:
Кликните здесь для просмотра всего текста
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include <iostream>
using namespace std;
 
 
struct Node   
 { int d;
   Node *l; 
   Node *r; 
 };
void add(Node*& p, int d);
void print( Node* p, int level=1 );
void del(Node* p,int key);
Node* firstpr(Node* p,int key);
Node* first(Node* p,int key);
 
void main()
{ Node* p, pv;
  int b[] = {10, 25, 20, 6, 21, 8, 1, 30};
  p = NULL;
  //cout <<"vvedite 4isla ";
  for(int i=0;i<8;i++) add(p,b[i]);
  cout<<endl;
   print( p );
   cout <<"\n\n"; 
  del(p,1);
  print(p);
  system("pause");
}
 
void add(Node*& p, int d) 
 
{ if (p == NULL)  
   { p = new Node; p->l = NULL; p->r = NULL; p->d = d; }
   else             
    { if (d >= p->d) add(p->r, d);  
      if (d <  p->d) add(p->l, d);   
    }
}
 
void print( Node* p, int level ) 
{ int tab = 5; 
 
  if (p == NULL) cout <<"Derevo pusto \n";
   else
    { if (p->r != NULL) print(p->r, level+1);
                
      cout.width(tab*level);
      cout<<p->d <<endl;
      if (p->l != NULL) print(p->l, level+1);
    }
}
 
Node* firstpr(Node* p,int key)
{
    if(p->l->d==key) return p;
    if(p->r->d==key) return p;
    if(key<p->d) firstpr(p->l,key);
    if(key>p->d) firstpr(p->r,key);
}
Node* first(Node* p,int key)
{
    Node* pv=firstpr(p,key);
    if(pv->l->d==key) return pv->l;
    if(pv->r->d==key) return pv->r;
}
 
void del(Node* p,int key)
{
    Node* pd1;
    Node* pr=firstpr(p,key);
    Node* pd=first(p,key);
    if((pd->r==NULL)&&(pd->l==NULL))
    {
        if(pr->r==pd) pr->r=NULL;
        else if(pr->l==pd) pr->l=NULL;
        delete pd;
    }
    /*else if(pd->l==NULL)
    {
        
        if(pr->r==pd)pr->r=pd->r;
        if(pr->l==pd)pr->l=pd->r;
        pd->r=NULL;
        delete pd;
    }
    else if(pd->r==NULL)
    {
        
        if(pr->r==pd)pr->r=pd->l;
        if(pr->l==pd)pr->l=pd->l;
        pd->l=NULL;
        delete pd;
    }*/
    /*else
    {
        if(pd->r->l==NULL)
        {
            if(pr->r=pd)pr->r=pd->r;
            if(pr->l=pd)pr->l=pd->r;
            pd->r=NULL;
            delete pd;
        }
        else
        {
            pd1=pd;
            pd1=pd1->r;
            while(pd1->l->l=NULL) pd1=pd1->l;
            pd1->l->l=pd->l;
 
        }
    }*/
 
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 18:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru