|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
18.02.2012, 15:41 | #1 | ||
Новичок
Джуниор
Регистрация: 18.02.2012
Сообщений: 4
|
Построение бинарного дерева
Здравствуйте! Не знаю где искать помощи, решил обратиться сюда, надеюсь поможете =)
Мне препод в универе дал задание, звучит оно примерно так: "Имеется текстовый файл с текстом из книги Война и Мир. Нужно построить бинарное дерево из слов входящих в этот файл. Добавление элемента в дерево зависит от количества вхождений данного слова в файл." Надеюсь суть понятна. Я почти сделал эту программу. Сначала сделал бинарное дерево чтобы подсчитать кол-во вхождений каждого слова и отсортировать его с помощью strcmp. Но потом, когда делаю второе дерево из элементов первого дерева то у меня возникает переполнение стека. Сделал ограничение до 5000 и все работает, но там в дереве еще остаются более 20000 слов. Бинарное дерево я строю рекурсивными функциями. Расскажу саму программу. Bunch - класс одного элемента дерева. Он содержит ссылки на левый и правый элемент такого же класса (дети элемента). Bunch.value - кол-во вхождений слова в текст Bunch.name[40] - само слово Цитата:
Цитата:
Я создам новое сообщение ниже с кодом этой функцией, не получается сюда |
||
18.02.2012, 15:43 | #2 | |
Новичок
Джуниор
Регистрация: 18.02.2012
Сообщений: 4
|
Вот сам код этой функции. Почему то отступы удалились =(
Цитата:
|
|
18.02.2012, 15:49 | #3 |
Новичок
Джуниор
Регистрация: 18.02.2012
Сообщений: 4
|
Функция MakeTree(Bunch* root, char* inName) - она добавляет (или увеливает счетчик вхождений если слово уже было в дереве) элемент в дерево у которого корень является root.
Я не знаю как пробежаться по первому дерево и параллельно добавлять элементы во второе дерево. Я сделал проще, первое дерево вывел в файл и написал функцию CreateTree2(Bunch* new_root). Она читает каждое слово и вызывает функцию MakeTree2(int& value, char* name, Bunch* new_root) которая считывает каждое слово из файла и добавляет его во второе дерево (с корнем root2) элементы. Но вот тут как раз проблема, после 5000го слова у меня возникает переполнение стека, и я не знаю что делать Прикрепил вывод деревьев в файлы Output.txt - это вывод первого дерева Output2.txt - это второе неполное дерево http://ifolder.ru/28784966 - это сама книжка Последний раз редактировалось LordAlex91; 18.02.2012 в 15:55. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Высота бинарного дерева | dido171 | Помощь студентам | 4 | 02.12.2014 13:30 |
Конструктор дерева (не бинарного) | murzilka6002 | Общие вопросы C/C++ | 3 | 12.11.2011 23:25 |
построение бинарного дерева по инфиксной записи | Екатерина Семенова | Помощь студентам | 1 | 23.05.2011 20:45 |
Высота бинарного дерева | m9yt | Общие вопросы C/C++ | 5 | 13.03.2010 22:17 |