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

Двоичное дерево - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Хеш-таблица http://www.cyberforum.ru/cpp-beginners/thread552831.html
Здравствуйте, ребята выручайте, дали лабараторку, написать хеш таблицу на с++, вообще въехать не могу, объясните хотябы примерно что да как сделать, вот что препод мне написал: http://ru.wikipedia.org/wiki/%D0%A5%D0%B5%D1%88-%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0 Вот хорошая статья, которая рассказывает, что такое хэш-табица. Всего надо реализовать три операции: добавление пары (ключ и...
C++ Поиск в строках файла Можете помочь с заданием ? Задан текстовый файл. В каждой строке файла найти слова з наибольшим количеством гласных букв. Заранее спасибо. Добавлено через 58 минут Можете, хотя бы расписать алгоритм работы программы ? Добавлено через 3 часа 24 минуты #include <stdio.h> http://www.cyberforum.ru/cpp-beginners/thread552824.html
Написать программу нахождения суммы большего и меньшего из трех чисел, найти ошибку C++
в чём ошибка? //Написать программу нахождения суммы большего и меньшего //из трех чисел. #include <iostream.h> #include <conio.h> #include <math.h> int main() { float x,y,z,sum,result,min,max,middle;
C++ Определить максимальный элемент массива, его номер и их количество
в массиве определить максимальный элемент, его номер и их кол-во
C++ Кратчайший код: поменять два числа местами и вывести их http://www.cyberforum.ru/cpp-beginners/thread552770.html
Вот борюсь за первое место в рейтинге Задачка Swap 1000 надо ввести два числа поменять их местами и вывести их я сделал так #include <iostream> void main() { int a,b; std::cin>>a>>b;
C++ Файловый ввод/вывод в С++ 1. Дан файл. В нем записана матрица 10 на 10, состоящая из вещественных чисел. Считать с файла эту матрицу. Транспонировать и вывести в другой файл. 2. Дан файл.В нем записан двумерный массив 8 на 8, состоящий из случайных чисел диапазона . Вывести в консоль количество отрицательных элементов, а сами отрицательные элементы вывести в новый файл. подробнее

Показать сообщение отдельно
Sade
2 / 2 / 1
Регистрация: 20.03.2012
Сообщений: 42
20.04.2012, 14:48     Двоичное дерево
Pascal
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
{$I-,Q-,R-,S-}
const
    FileIn  = 'Input.txt' ;
    FileOut = 'Output.txt';
 
type
    TTreeType = ^TreeType ;
    TreeType  = record
               Left  : TTreeType ;
               Right : TTreeType ;
               Prev  : TTreeType ;
               key   : longint   ;
            end;
 
var
    N     : longint   ;
    Root,Buff : TTreeType ;
 
procedure TreeInsert( var X : TTreeType ; p : longint );
begin
    if X = nil then begin
                 New( X );
                 X^.Prev := Buff ;
                 X^.Left := nil ;
                 X^.Right := nil ;
                 X^.key := p ;
                 Exit ;
                end;
    Buff := X ;
    if p < X^.key then TreeInsert( X^.Left , p )    
              else TreeInsert( X^.Right , p );
end;
 
function TreeSearch( var X : TTreeType ; p : longint ) : TTreeType ;
begin
    TreeSearch := nil ;
    if X <> nil then
      if X^.key = p then TreeSearch := X
            else begin
                  if p < X^.key
                        then TreeSearch := TreeSearch( X^.Left,p )
                    else TreeSearch := TreeSearch( X^.Right,p );
                 end;           
end;
 
function TreeSuccessor( X : TTreeType ) : TTreeType ;
begin
    X := X^.Right ;
    while X^.Left <> nil do
      X := X^.Left ;
    TreeSuccessor := X ;
end;
 
procedure TreeDelete( p : longint );
 
procedure DeleteNode( var z : TTreeType );
var
    y,x : TTreeType ;
begin
    if ( z^.Left = nil ) or ( z^.Right = nil )
        then y := z
        else y := TreeSuccessor( z );
    if y^.Left <> nil then x := y^.Left
              else x := y^.Right ;
        if x <> nil then x^.Prev := y^.Prev ;
    if y^.Prev = nil then Root := x
             else if y = y^.Prev^.Left then y^.Prev^.Left := x
                           else y^.Prev^.Right := x ;
    if y <> z then z^.key := y^.key ;
end;
 
begin
    Buff := TreeSearch( Root , p );
    DeleteNode( Buff );
end;
 
procedure Solution;
var
    i,Chislo : longint ;
    Query    : char    ;
begin
    Assign( Input , FileIn );
    ReSet( Input );
    ReadLn( N );
    for i:=1 to N do
       begin
        Read( Query );
        ReadLn( Chislo );
        Buff := nil ;
        case Query of
          'I' : TreeInsert( Root , Chislo );
          'D' : TreeDelete( Chislo );
          'S' : if TreeSearch( Root , Chislo ) <> nil
                        then WriteLn( 'YES' )
                        else WriteLn( 'NO' );
        end;
       end;
    Close( Input );
end;
 
begin
    Solution;
end.
Добавлено через 59 секунд
тут построение , вставка , удаление , а под свою задачу подгоняй сам!
 
Текущее время: 15:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru