Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.06.2012, 14:46   #1
[BeNdeR]
Пользователь
 
Аватар для [BeNdeR]
 
Регистрация: 14.04.2011
Сообщений: 74
Печаль Дерево методом рекурсиий

Добрый день! Пишу словарь на основе префиксного динамического дерева) На данный момент пытаюсь осуществить добавление элемента с помощью рекурсии. Вот код
Код:
namespace Slovar
{
    public partial class Form1 : Form
    {
        Wordd tree;//дерево
       
     public Form1()
        {
            InitializeComponent();
            tree = new Wordd();// создаём новый элемент типа Wordd
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Wordd temp = new Wordd();
            temp.Slovo = textBox2.Text;
            temp.Perevod = textBox1.Text;
            AddElement(temp.Slovo,tree);//функция добавления
        }

        private Wordd AddElement(string s, Wordd node)
        {  
            if (s.Length==0) return null;//если слово кончилось то return 
            else{
                if (node.qwer.Count == 0) { //если дерево пустое
                    Wordd w = new Wordd();
                    w.Bykva = s.Substring(0, 1);//буква слова
                    s = s.Substring(1, s.Length - 1);//отрезаем букву
                    w = AddElement(s, w);
                    node.qwer.Add(w);//добавляем в дерево
                }
                else{
                    for (int i = 0; i < s.Length; i++)
                    {
                        string slovo = s.Substring(0, 1);
                        if ((slovo) == Convert.ToString(node.qwer[i]))
                        {
                            s = s.Substring(1, s.Length - 1);
                        }
                        else
                        {
                            Wordd w = new Wordd();
                            w.Bykva = s.Substring(0, 1);
                            s = s.Substring(1, s.Length - 1);
                            w = AddElement(s, w);
                            node.qwer.Add(w);

                        }
                    }
                }
                   
             }
            return что-то; //:D вот тут я не в курсе
        } 
    }

    public class Wordd
    {

        public string Slovo;
        public string Perevod;
        public string Bykva;
        public List<Wordd> qwer;

        public Wordd()
        {
            qwer = new List<Wordd>();
        }
    }

}
Не знаю как дальше написать...Запутался! Нужна ваша помощь! За ранее спасибо!
ПС. Сейчас застопорился на том, что node.qwer.Count не наращивается.
[BeNdeR] вне форума Ответить с цитированием
Старый 11.06.2012, 22:25   #2
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию

удалить ....

Последний раз редактировалось Lime; 11.06.2012 в 22:27. Причина: miss
Lime вне форума Ответить с цитированием
Старый 12.06.2012, 00:37   #3
[BeNdeR]
Пользователь
 
Аватар для [BeNdeR]
 
Регистрация: 14.04.2011
Сообщений: 74
По умолчанию

Цитата:
Сообщение от Lime Посмотреть сообщение
удалить ....
Непонятно..
[BeNdeR] вне форума Ответить с цитированием
Старый 12.06.2012, 03:32   #4
DENIS_POLOTSK
Пользователь
 
Регистрация: 28.05.2012
Сообщений: 29
По умолчанию

Попробуй больше кода кинуть, в два раза, понятней станет))
DENIS_POLOTSK вне форума Ответить с цитированием
Старый 12.06.2012, 10:49   #5
Reskov
Форумчанин
 
Аватар для Reskov
 
Регистрация: 17.12.2008
Сообщений: 250
По умолчанию

попробуйте погуглить префиксные деревья станет все проще и понятней!!!! ищите на англ trie поверьте мне найдете кучу информации хотя бы вот
http://code.google.com/p/typocalypse...rowse/#hg/Trie
описание на хабре http://habrahabr.ru/post/111874/
разберитесь в алгоритме, посмотрите чужой код, напишите свой... три несложных последовательных шага)

Последний раз редактировалось Reskov; 12.06.2012 в 10:56.
Reskov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение СЛАУ методом Гаусса и методом Крамера. R1k1 Помощь студентам 0 24.03.2012 19:17
Решение нелинейных уравнений методом хорд и методом простой итерации(С++) Foralberg Помощь студентам 9 31.01.2011 01:33
курсач по С++ на тему сортировок методом пузырька и челночным методом ffocus Фриланс 13 05.01.2010 20:20
Задача Методом Эйлера и методом Рунге-Кутта. Прошу помочь. Очень срочно. BeNeDiKT Паскаль, Turbo Pascal, PascalABC.NET 0 12.05.2009 13:14
Решение уравнения методом деления отрезка пополам. Методом секущей. Panda196 Паскаль, Turbo Pascal, PascalABC.NET 3 25.11.2008 09:06