Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 14.04.2014
Сообщений: 7
1

Описать логическую функцию equal(T1, T2), проверяющую на равенство деревья Т1 и Т2 (рекурсивно и итеративно)

28.04.2014, 20:41. Показов 3654. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Рекурсивно и не рекурсивно описать логическую функцию equal (T1,T2), проверяющую на равенство деревья Т1 и Т2.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.04.2014, 20:41
Ответы с готовыми решениями:

Описать логическую функцию equal (l1,l2), проверяющую на равенство списки l1 и l2
Добрый день, прошу помощи в написании кода (работаю в QT Creator 2.0.1). Задание: Описать...

Описать логическую функцию Equal(f1,f2), проверяющую файлы f1 и f2 типа myfile на равенство.
type myfile = file of char; Описать логическую функцию Equal(f1,f2), проверяющую файлы f1 и f2...

Рекурсивно и нерекурсивно описать логическую функцию, проверяющую на равенство два бинарных дерева
страшно каюсь, не подумайте что я ленивый тюлень и мне не хочется вникать в тему, обычно я никогда...

Описать процедуру EQUAL(T1,T2), проверяющую на равенство 2-3–деревья Т1 и Т2
Может кто сможет написать? Описать процедуру EQUAL(T1,T2), проверяющую на равенство 2-3–деревья Т1...

5
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,640
Записей в блоге: 13
29.04.2014, 19:43 2
А какой вид деревьев интересует? Их ведь много...

Добавлено через 41 минуту
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
#include <stdio.h>
#include <malloc.h>
 
struct Node 
{
    int Value;
    Node *Left;
    Node *Right;
};
 
/* Ïîñòðîåíèå ïðîñòîãî äåðåâà ïîèñêà */
/* áåç áàëàíñèðîâêè                  */
 
Node *BuildTree(int *Arr, int n)
{
    Node *Root,*Curr,*Prev;
    int i,w,f;
 
    Root=(Node *) calloc(1,sizeof(Node));
    Root->Value=Arr[0];
    Root->Right=NULL;
    Root->Left=NULL;
 
    for (i=1; i<n; i++)
    {
        w=Arr[i];
        Curr=Root;
 
        while (1)
        {
            if (Curr==NULL)
            {
                Curr=(Node *) calloc(1,sizeof(Node));
                Curr->Value=w;
                if (f==1) 
                    Prev->Right=Curr;
                else
                    Prev->Left=Curr;
                break;
            }
 
            if (Curr->Value > w)
            {
                Prev=Curr;
                Curr=Curr->Right;
                f=1;
            }
            else
            {
                Prev=Curr;
                Curr=Curr->Left;
                f=-1;
            }
 
        }
 
    }
 
    return Root;
 
}
 
/* Ïå÷àòü äåðåâà â Ëèñï-ïîäîáíîì âèäå */
 
void PrintTree(Node *N)
{
    if (N==NULL) 
        printf(" NULL ");
    else
    {
        printf("(");
        PrintTree(N->Left);
        printf(" %d ",N->Value);
        PrintTree(N->Right);
        printf(")");
    }
}
 
/* Óäàëåíèå äåðåâà  */
 
void DelTree(Node *N)
{
    Node *L,*R;
    L=N->Left;
    R=N->Right;
    free(N);
    if (L != NULL) DelTree(L);
    if (R != NULL) DelTree(R);
}
 
/* Ñðàâíåíèå äåðåâüåâ */
 
int CompTree(Node *N1, Node *N2)
{
    if ((N1==NULL) && (N2==NULL)) return 1;
    if ((N1==NULL) && (N2!=NULL)) return 0;
    if ((N1!=NULL) && (N2==NULL)) return 0;
    if (N1->Value == N2->Value) 
        return CompTree(N1->Left,N2->Left) &&  CompTree(N1->Right,N2->Right);
    else
        return 0;
}
 
int main(int argc, char* argv[])
{
 
    int A[10]={0,6,1,5,-4,11,7,-1,3,-7};
    int B[10]={0,6,1,5,-4,11,7,-1,3,-7};
    int C[10]={11,9,-1,5,-4,11,7,-12,3,-7};
 
    Node *r1,*r2,*r3;
    
    r1=BuildTree(A,10);
    r2=BuildTree(B,10);
    r3=BuildTree(C,10);
 
    printf("Tree: \n");
    PrintTree(r1);
    printf("\nand:\n");
    PrintTree(r2);
    printf("\n");
    
    (CompTree(r1,r2))?printf("are equal!\n"):printf("are not equal!\n");
 
    printf("Tree: \n");
    PrintTree(r1);
    printf("\nand:\n");
    PrintTree(r3);
    printf("\n");
    
    (CompTree(r1,r3))?printf("are equal!\n"):printf("are not equal!\n");
 
    DelTree(r1);    
    DelTree(r2);    
    DelTree(r3);    
    printf("\n");
    return 0;
}
1
0 / 0 / 0
Регистрация: 14.04.2014
Сообщений: 7
29.04.2014, 20:06  [ТС] 3
интересует двоичное дерево

А ваш вариант рекурсивный или нет?
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,640
Записей в блоге: 13
29.04.2014, 20:10 4
Реализовано двоичное дерево поиска в рекурсивном варианте.
0
0 / 0 / 0
Регистрация: 14.04.2014
Сообщений: 7
29.04.2014, 22:07  [ТС] 5
Спасибо за помощь!
0
0 / 0 / 0
Регистрация: 14.04.2014
Сообщений: 7
11.05.2014, 12:45  [ТС] 6
А можете подсказать в нерекурсивном варианте функцию сравнения двух деревьев?
0
11.05.2014, 12:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.05.2014, 12:45
Помогаю со студенческими работами здесь

Описать логическую функцию, проверяющую на равенство файлы
Type время = record час:0..23; мин, сек:0..59 end; ФВ = file of время; Описать логическую функцию...

Описать логическую функцию eq(f,g), проверяющую на равенство файлы f и g типа ФВ.
написала программу, но она у меня не сравнивает, постоянно выводит, что &quot;файлы не равны&quot;. а задание...

Написать функцию Equal (p, q), проверяющую на равенство многочлены p и q
Здравствуйте, помогите пожалуйста с решением задачи. Её условие: Многочлен P(x) = a0 + a1x +...

Описать логическую функцию, проверяющую, «бьет» ли карта К1 карту К2
Используя следующий фрагмент программы, опишите логическую функцию High (К1, К2 : card; КМ : mast),...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru