Форум программистов, компьютерный форум CyberForum.ru

Функция для нахождения количества элементов в бинарном дереве - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Бинарное дерево http://www.cyberforum.ru/cpp-beginners/thread778227.html
Здравствуйте, очень нужна ваша помощь ... нужна программа для работы с бинарным деревом, а именно (создание , добавление элемента, удаление элемента и узла) Но есть особый принцип работы который я сейчас опишу Вот сначала имеем пустое дерево затем добавляем элемент в корень потом добавляем второй элемент ниже и перед тем как его разместить на дереве сравниваем его с верхним элементом если он...
C++ Рендеринг Flash своими силами Задумался о создании Flash GUI. Но вот ведь беда, Adobe не делится библиотеками воспроизведения ихнего .swf, а Autodesk зажала свой Scaleform. Все плохо, но еще ужасней то, что флешку желательно рендерить кроссплатформенно, что отметает ActiveX. Вот и встает вопрос, неужели разбирать бедную swf-шку вручную? Попробовал разобраться в спецификации SWF но там черт ногу сломит. Быть может у адобовцев... http://www.cyberforum.ru/cpp-beginners/thread778222.html
C++ Удалить часть текста в круглых скобках
В заданном тексте удалить часть текста, заключенную в круглые скобки (скобки не удалять). Не поможите?
Код программы C++
Если есть исходники программы, в котором из файлов хранится код программы и можно ли его от туда извлечь?
C++ программа про дни рождения http://www.cyberforum.ru/cpp-beginners/thread778175.html
срочно!!!!!!!! На новый 2013й год была подарена коробка N свечей для торта. Даны даты рождения M знакомых детей: d1 m1 y1 ... dM mM yM
C++ Переписать несложную функцию Функция void obmen(float *a,float *b) { float temp; temp=*a; temp=*(a+1); *a=*b; *(a+1)=*(b+1); *b=temp; подробнее

Показать сообщение отдельно
abit
262 / 261 / 33
Регистрация: 03.02.2013
Сообщений: 722
05.02.2013, 14:52
Цитата Сообщение от silent_1991 Посмотреть сообщение
Да ну? Рекурсия (т.е. постоянные вызовы функций и сохранения контекстов) - далеко не так оптимально, как итерация.
продемонстрируйте нам код )
известные мне приёмы обхода (в глубину/ширину) во всю юзают стек, что по сути не сильно отличается от рекурсивного обхода

вот написал итеративный обход в ширину
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int count(Node * tree)
{
   unsigned int counter = 0;
   stack <Node*> st;
  do
  {
    while (tree != 0)
    {
      st.push(tree);
      tree = tree->left;
    }
    if (st.empty()) return counter-1;
    tree=st.top();
    st.pop();
    if ((tree->right == NULL))++counter;
    if (tree->left == NULL) ++counter;
    tree = tree->right;
  }
  while (true);
}
на удивление даже работает)))
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru