Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
 
Serg22
104 / 104 / 58
Регистрация: 04.03.2013
Сообщений: 479
Завершенные тесты: 2
1

Сделать так, чтобы от одного узла было только два пути (влево меньший элемент, вправо больший)

20.04.2014, 14:35. Просмотров 353. Ответов 1
Метки нет (Все метки)

Христос Воскрес!)
Выполняю курсовую работу по теме "Визуализация бинарных деревьев ....бла бла"

1) Первый вопрос в том, как мне сделать что бы от одного узла было только два пути (влево меньший элемент, вправо больший). Сейчас получается рандомное колличество путей от корневого узла(
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
        panel1->Controls->Clear();
                panel1->Refresh();
                richTextBox1->Clear();
                bTree->Clear();
                Graphics ^panelGraphics = panel1->CreateGraphics();
 
 
                int startX = 0, startY = 0;
                int curX   = 0, curY = 0;
        
        for (int i = 0; i < number1; i++)
        {
            bTree->AddItem((double)rand() / (RAND_MAX + 1) * (100 - (-100)) + (-100));
        }
 
                
    
 
for each(BinaryTree<int>::Node * item in  bTree->PrintTree())
      {
          curX = item->theX;
          curY = item->theY;
 
          
          Label^ label = gcnew Label();
          label->Font = gcnew System::Drawing::Font("verdana",12);
          label->Width = 40;
          label->BackColor = Color::YellowGreen;
 
          if ( curX > panel1->Width - label->Width ) 
                curX = panel1->Width - label->Width - 5;
           if ( curY < 0 ) 
                curY =  5;
 
          label->Location = Point(curX, curY);
          label->Text = Convert::ToString((int) item->Data);
 
          if( startX != startY != 0 )
          {
           panelGraphics->DrawLine(gcnew Pen(Color::Brown, 4),Point(startX, startY), Point(curX, curY));
          }
          panelGraphics->FillRectangle(Brushes::Black ,  curX- 2, curY - 2, 40, label->Height);
          panel1->Controls->Add(label);
 
           if(  item->testRoot )
           {
             startX = curX;
             startY = curY;
           }
         
           richTextBox1->AppendText(String::Format("  {0}          {1}\r\n", item->Data , item->Count));
      }
2) При создании большого колл-ва элементов дерева (>20) график вылазит за рамки панели + нагромаждение один на другой. Как этого избежать?
Очень надеюсь на вашу помощь и поддержку)

(отдельное спасибо "MrCold" за алгоритм бинарного дерева)

скрины
Сделать так, чтобы от одного узла было только два пути (влево меньший элемент, вправо больший)
Сделать так, чтобы от одного узла было только два пути (влево меньший элемент, вправо больший)

----------------

проект: binary.zip
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.04.2014, 14:35
Ответы с готовыми решениями:

Как сделать, чтобы нельзя было вводить текст в TextBox, только цифры?
как сделать чтобы нельзя было вводить текст в TextBox, только цыфры

Как создать ограничение для ScrollBar? Например, чтобы можно было вправо прокрутить только 3 раза (нажать вправо мышкой только 3 раза, а дальше нельзя
Как создать ограничение для ScrollBar? Например, чтобы можно было вправо...

Сделать так чтобы в строке было по два слова
Дан текст, сделать так чтобы в каждой строке стало по два слова

Сделать так, чтобы при выборе одного checkbox'a нельзя было выбрать другой
Помогите сделать так, что бы при выборе одного checkbox'a нельзя было выбрать...

Как сделать так чтобы можно было ввести только дату?
Вот основная форма: Вот форма при нажатии на кнопку &quot;Добавить&quot;: Так вот...

1
Serg22
104 / 104 / 58
Регистрация: 04.03.2013
Сообщений: 479
Завершенные тесты: 2
23.04.2014, 18:58  [ТС] 2
help)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.04.2014, 18:58

Как сделать так чтобы в textbox можно было вписать только буквы?
Private Sub Textbox1_Change() Textbox1.Value =...

Как сделать так чтобы в QLineEdit можно было вводить только буквы
Как сделать так чтобы в QLineEdit можно было вводить только буквы а все...

Как сделать так, чтобы можно было закрыть только текущую Форму?
Доброго времени суток. Я использую Windows Forms и язык C# для написания не...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru