,   CyberForum.ru

- C++

 
Yukimura
0 / 0 / 0
: 12.12.2013
: 4
12.12.2013, 15:55     #1
, .
.

: , , , N.

, . .

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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <conio.h>
#include <algorithm>
using namespace std;
typedef int newtp;
struct node//îïèñ**èå ñòðóêòóðû
{
    newtp data;
    node *left;
    node *right;
} *head=NULL;
 
int compare(newtp a,newtp b){return (int)a>(int)b?1:(int)a==(int)b?0:-1;}//ôóêöèÿ ñð*â*èâ**èÿ ýëåìå*òîâ
 
void add(node *&t,newtp dt)//äîá*âèòü óçåë â äåðåâî
{
    if(t==NULL)//ñîçä*¸ì óýåë è äîá*âëÿåì ê êî*öó âåòêè
    {
        t=new node;
        t->data=dt;
        t->left=t->right=NULL;
        return ;
    }
    if(compare(t->data,dt)==1)//ñð*â*èâ*åì äâ* ç**÷å*èÿ è âûáèð*åì ê ê*êîé âåòêè äîá*âèòü ê ëåâîé èëè ïð*âîé
        add(t->left,dt);
    else
        add(t->right,dt);
 
}
 
node* serch(node *t,newtp dt)//ïîèñê óçë*
{
    if(t==NULL) return NULL;// âåòê* ïóñò*
    if(compare(t->data,dt)==0) return t;
    if(compare(t->data,dt)==1)//ñð*â*èâ*åì äâ* ç**÷å*èÿ è âûáèð*åì ïî ê*êîé âåòêè ïðîäîëæ*òü ïîèñê ëåâîé èëè ïð*âîé
        serch(t->left,dt);
    else
        serch(t->right,dt);
}
 
void clean(node *t)//óä*ëèòü âñå ýëåìå*òû èç äåðåâ*
{
    if(t==NULL)return ;
    clean(t->left);
    delete t;
    clean(t->right);
}
 
void view1(node *t)// Îáõîä â ïðÿìîì ïîðÿäêå
{
    if(t==NULL)return ;
    printf ("%d \n",(int)t->data);
    view1(t->left);
    view1(t->right);
}
 
void view2(node *t)// Ñèììåòðè÷*ûé îáõîä
{
    if(t==NULL)return ;
    view2(t->left);
    printf ("%d \n",(int)t->data);
    view2(t->right);
}
 
void view3(node *t)// Îáõîä â îáð*ò*îì ïîðÿäêå
{
    if(t==NULL)return ;
    view3(t->left);
    view3(t->right);
    printf ("%d \n",(int)t->data);
}
 
int height(node *p)// âû÷èñëå*èå âûñîòû äåðåâ*
{
    struct node *temp=p;
    int h1=0,h2=0;
    if(p==NULL)return(0);
    if(p->left){h1=height(p->left);}
    if(p->right){h2=height(p->right);}
    return(max(h1,h2)+1);
}
 
 
int main(int args,char *argv[])
{
    char command[10];
    int znach;
    while(1)
    {
    printf ("1) Äîá*âëå*èå *îâîãî óçë*.\n2) Ïîèñê ýëåìå*ò*.\n3) Âû÷èñëèòü âûñîòó äåðåâ*.\n4) Î÷èñòèòü äåðåâî.\n5) Ïðåôèêñ*ûé îáõîä.\n6) È*ôèêñ*ûé îáõîä.\n7) Ïîñòôèêñ*ûé îáõîä.\n");
    printf ("Ââåäèòå êîìì**äó : \n");
    scanf("%s",command);
    printf ("\n");
        if(strcmp(command,"1")==0)
        {
            printf ("Äîá*âèòü :\n");
            if(scanf("%d",&znach))
            {
                if(head!=NULL)
                {
                    node *t=head;
                    add(t,(int)znach);
                }
                else
                    add(head,(int)znach);
            }
        }
        else if(strcmp(command,"2")==0)
        {
            printf ("Í*éòè :\n");
            if(scanf("%d",&znach))
            {
                node *t=head;
                t=serch(t,znach);
                if(t==NULL)
                    printf ("Íå **éäå*î.\n");
                else
                    printf ("Í*éäå* ýëåìå*ò %d\n.",(int)t->data);
            }
        }
        else if(strcmp(command,"3")==0)
        {
            printf ("Âûñîò* äåðåâ* = %d\n",height(head));
        }
        else if(strcmp(command,"4")==0)
        {
            clean(head);
            head=NULL;
            printf ("Î÷èùå*î!\n");
        }
        else if(strcmp(command,"5")==0)
        {
            node *t=head;
            view1(t);
        }
        else if(strcmp(command,"6")==0)
        {
            node *t=head;
            view2(t);
        }
        else if(strcmp(command,"7")==0)
        {
            node *t=head;
            view3(t);
        }
        else
        {
            printf ("Íåèçâåñ**ÿ êîìì**ä*!\n");
        }
        printf ("\nÄëÿ ïðîäîëæå*èÿ ð*áîòû ïðîãð*ììû **æìèòå ëþáóþ êë*âèøó!");
        getch();
        system("cls");
    }
    return 0;
}
Similar
41792 / 34177 / 6122
: 12.04.2006
: 57,940
12.12.2013, 15:55    
:

C++
! C++
C++
C++
C++
.
Black_Thorn
17 / 17 / 1
: 06.12.2012
: 46
12.12.2013, 18:17     #2
- , int deep; - root = 0; .
Yukimura
0 / 0 / 0
: 12.12.2013
: 4
12.12.2013, 18:22  []     #3
. , .
.
Yukimura
0 / 0 / 0
: 12.12.2013
: 4
14.12.2013, 00:41  []     #4
. .
Yandex
14.12.2013, 00:41    

: 10:31. GMT +3.
- , ,
-
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
@Mail.ru