![]() |
Модераторы: Poseidon |
![]() ![]() ![]() |
|
bobr |
|
|||
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 23.2.2007 Репутация: нет Всего: нет |
Друзья, существует такой вопрос:
есть двоичное дерево, заполненное целыми числами. Можно ли, организовав обход по дереву, переписать содержимое всех его элементов в массив? Я пробовал написать программу, но сложность в том, что программа обхода по дереву рекурсивная и по окончании дает сразу несколько чисел->так их в массив не запишешь! ![]() |
|||
|
||||
keenara |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 2.2.2007 Репутация: 2 Всего: 2 |
Конечно можно!
В чём проблема собственно? Каждый раз когда дошёл до листа записываешь его значение в массив и делаешь инкремент индекса массива. Рекурсия этому совершенно не мешает. Ты как я поняла с помощью функции обхода получаешь несколько чисел - путь по дереву, так вот, нам это не нужно, нам нужно всего лишь листы переписать, причём делать это прямо внутри процедуры обхода. |
|||
|
||||
bobr |
|
|||
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 23.2.2007 Репутация: нет Всего: нет |
keenara, проблема в том, что если заполнять массив в функции, из-за рекурсии он будет обнуляться. Ты не напомнишь, как вызывать в функцию массив "по значению"?
|
|||
|
||||
Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 32 Всего: 61 |
bobr,
Передавай индекс массива или по ссылке, или как указатель -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
keenara |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 2.2.2007 Репутация: 2 Всего: 2 |
Никакой проблемы тут нет. Она возникает если массив локальный. Но мы не дураки и объявим его глобальным. И все будет зер гут ![]()
Нельзя передать массив в функцию по значению. Так можно только отдельные элементы передать. Чтобы весь массив передать, нужно его по указателю или по ссылке передать. По указателю например так - передается указатель на первый элемент и длина массива. Это сообщение отредактировал(а) keenara - 10.5.2007, 20:44 |
||||
|
|||||
Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 32 Всего: 61 |
keenara,
Плохое решение с алгоритмической точки зрения и точки зрения безопасности ![]() Нужен локальный массив. Одно из решений я привел -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
keenara |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 2.2.2007 Репутация: 2 Всего: 2 |
Конкретно в этой задаче глобальный массив нам не может особо повредить, возможно даже упростит внешний вид кода. Но в глобальном смысле ты конечно прав ![]() |
|||
|
||||
Rockie |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 23.4.2006 Репутация: 13 Всего: 31 |
Есть рабочий код - выкладывай, подправим ![]() -------------------- Чтобы иметь большой гардероб - надо иметь большой гардероб. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Центр помощи" | |
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |