Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "pt4.h"
- using namespace std;
- // Рекурсивный проход по дереву
- //
- // node Текущий узел дерева
- // targetLevel Целевой уровень, до куда идём
- // currentLevel Текущий уровень, нужен в качестве счётчика
- //
- void WalkTree(PNode node, int targetLevel, int currentLevel)
- {
- // мы достигли (комедии) нужного уровня?
- if (currentLevel == targetLevel)
- {
- // выводим данные и завершаем рекурсию
- pt << node->Data;
- return;
- }
- // иначе идем дальше, первым делом тикая счётчик на +1
- currentLevel++;
- // вытаскиваем узлы справа и слева от текущего
- PNode right = node->Right;
- PNode left = node->Left;
- // если узел справа есть - идём рекурсивно по нему
- if (right)
- WalkTree(right, targetLevel, currentLevel);
- // если узел слева есть - идём рекурсивно по нему
- if (left)
- WalkTree(left, targetLevel, currentLevel);
- }
- void Solve()
- {
- Task("TreeWork61");
- // получаем корень
- PNode root;
- pt >> root;
- // получаем целевой уровень, к которому будем спускаться
- int targetLevel;
- pt >> targetLevel;
- // вызываем рекурсивную функцию для корня дерева, считая его уровень нулевым
- WalkTree(root, targetLevel, 0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement