4 / 4 / 4
Регистрация: 06.03.2011
Сообщений: 319
|
||||||
1 | ||||||
Дерево - исправить ошибки в коде27.04.2011, 22:07. Показов 1695. Ответов 17
Метки нет (Все метки)
Здравсвуйте пытаюсь разобраться в деревьях............пока только создаю. выпадают ошибки.как их исправить?
Вот ошибки Error 1 error C2628: 'Tree' followed by 'void' is illegal (did you forget a ';'?) Error 2 error C2447: '{' : missing function header (old-style formal list?)
0
|
27.04.2011, 22:07 | |
Ответы с готовыми решениями:
17
Ошибки при компиляции - исправить ошибки в коде Исправить ошибки в коде Исправить ошибки в коде |
623 / 467 / 57
Регистрация: 28.01.2011
Сообщений: 605
|
|
27.04.2011, 22:20 | 2 |
Сообщение было отмечено Памирыч как решение
Решение
struct Tree
{ int data; Tree* left; Tree* right; };
1
|
4 / 4 / 4
Регистрация: 06.03.2011
Сообщений: 319
|
||||||||||||||||
27.04.2011, 22:55 [ТС] | 3 | |||||||||||||||
Спасибо большое....не подскажите почему при выведе на экране получились нули(((((
или вывод не правильный?
ноль как я понимаю из за этой строчки
если писать !=NULL то выводится число -842150451 много раз как сделать так чтобы были разные числа? Добавлено через 20 минут
0
|
623 / 467 / 57
Регистрация: 28.01.2011
Сообщений: 605
|
|||||||||||
27.04.2011, 23:10 | 4 | ||||||||||
Да, нуль из-за этой строчки.
Судя по всему, вам надо распечатать дерево, для этого придется пройти каждый узел дерева, можно сделать например так:
1
|
4 / 4 / 4
Регистрация: 06.03.2011
Сообщений: 319
|
|
27.04.2011, 23:29 [ТС] | 5 |
Ой ой ой а почему они выводятся такими как бы диагоналями?
0
|
623 / 467 / 57
Регистрация: 28.01.2011
Сообщений: 605
|
||||||
27.04.2011, 23:34 | 6 | |||||
Сделано для того, чтобы "подчеркнуть" иерархичность струкруры, так по-моему лучше видно, где какая ветка дерева и что кому принадлежит.
Если не особо перевариваете, то перепишите так
1
|
4 / 4 / 4
Регистрация: 06.03.2011
Сообщений: 319
|
||||||
29.04.2011, 21:08 [ТС] | 7 | |||||
Пытаюсь написать обход в "глубину"
Но чтото не так посморите пожалуйста....
0
|
623 / 467 / 57
Регистрация: 28.01.2011
Сообщений: 605
|
||||||
29.04.2011, 21:46 | 8 | |||||
Во-первых, синтаксические ошибки. А во-вторых, мне что-то не очень понятно, что у вас тут творится, явно не обход в глубину.
Поиск в глубину( считаем, что сначала посещаем узел дерева, а потом переходим к левой подветке, а еще потом к правой) состоит в том, что посещаем узлы "до упора", пока левая ветка не кончится, потом перебираемся на правую ветку, и так тоже пока не кончится. Попробуйте так, если нужно со стеком( и еще определитесь с тем, вы на C или на C++ пишете, а пока приведу код на c++ ):
1
|
4 / 4 / 4
Регистрация: 06.03.2011
Сообщений: 319
|
||||||
29.04.2011, 22:00 [ТС] | 9 | |||||
В методичке было так......пыталась по переправить на свой случай но не получилось
Обход в глубину.Для того чтобы обойти некоторое поддерево, сначала пройдем корень этого поддерева,затем спустимся в его левое поддерево,а правое поддерево запомним в стеке. Если оба поддерева пусты, то очередное поддерево надо извлечь из стека.
0
|
623 / 467 / 57
Регистрация: 28.01.2011
Сообщений: 605
|
||||||
29.04.2011, 22:13 | 10 | |||||
И снова синтаксические ошибки, ну да ладно, если хотите на своем примере, то чуток подправить его и должно работать:
0
|
4 / 4 / 4
Регистрация: 06.03.2011
Сообщений: 319
|
||||||
29.04.2011, 22:15 [ТС] | 11 | |||||
0
|
623 / 467 / 57
Регистрация: 28.01.2011
Сообщений: 605
|
|
29.04.2011, 22:22 | 12 |
Это указатель, который будет указывать на каждый узел, который мы будем проходить в процессе обхода(а голову присваиваем, потому что начинаем от корня дерева).
Помещаем этот узел в стек после того, как распечатали его значение, чтобы потом, когда текущая ветка кончится, можно было вернуться по нему обратно. Заходим дальше в левое поддерево если стек вершин, куда мы можем возвращаться, пуст( то есть мы уже посетили все вершины, которые есть в дереве ), то просто выходим из цикла. В "текущий" узел помещаем указатель на узел на вершине стека и выбрасываем его из стека(то есть просто возвращаемся назад по дереву). пробуем перейти в правое поддерево.( вот на этом моменте тоже полезно сравнение curr с NULL, так как если правой подветки нет, то curr будет равен NULL и мы просто возьмем из стека последний посещенный узел и продолжим дальше )
1
|
4 / 4 / 4
Регистрация: 06.03.2011
Сообщений: 319
|
|
29.04.2011, 22:27 [ТС] | 13 |
Спасибо большое что всё разжевали.......хоть чтото поняла...дальше попробую обходы смотреть
0
|
4 / 4 / 4
Регистрация: 06.03.2011
Сообщений: 319
|
||||||
02.05.2011, 23:19 [ТС] | 14 | |||||
Правильно ли создаю функцию поиска значения в дереве?не работает....помогите пожалуйста
0
|
623 / 467 / 57
Регистрация: 28.01.2011
Сообщений: 605
|
||||||
02.05.2011, 23:45 | 15 | |||||
yuliyayuliya28, не работает, видимо, потому, что функцию вы написали типа void, а она должна возвращать указатель на узел дерева, то есть Tree *.
1
|
4 / 4 / 4
Регистрация: 06.03.2011
Сообщений: 319
|
|
03.05.2011, 00:11 [ТС] | 16 |
Спасибо...а как сделать так нашел или нет элемент ?
0
|
623 / 467 / 57
Регистрация: 28.01.2011
Сообщений: 605
|
||||||
03.05.2011, 00:18 | 17 | |||||
yuliyayuliya28, здесь достаточно посмотреть возвращаемое значение Tree_search. Если указатель, который вернула эта функция равен NULL, то значение не было найдено, иначе, нашелся элемент с указанным значением.
Добавлено через 4 минуты То есть можно так проверить:
1
|
4 / 4 / 4
Регистрация: 06.03.2011
Сообщений: 319
|
|
03.05.2011, 00:30 [ТС] | 18 |
Спасибо....в целом и с поиском немного поняла
0
|
03.05.2011, 00:30 | |
03.05.2011, 00:30 | |
Помогаю со студенческими работами здесь
18
Исправить ошибки в коде Исправить ошибки в коде Исправить ошибки в коде Исправить ошибки в коде Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |