Advertisement
Gistrec

Print Tree

Mar 5th, 2018
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.94 KB | None | 0 0
  1.     // Напечатать дерево
  2.     // Сверху печатается левое поддерево
  3.     // Справа печатается правое поддерево
  4.     enum state { ROOT, LEFT, RIGHT };
  5.     void print() {
  6.         if (root != nullptr) print(root, "", ROOT);
  7.     }
  8.     void print(Node* node, std::string prefix, state last) {
  9.         std::cout << prefix;
  10.         if (last == ROOT) {
  11.  
  12.         } else if (last == LEFT) {
  13.             std::cout << "|-- П: ";
  14.             prefix.append("       ");
  15.         } else {
  16.             std::cout << "|-- Л: ";
  17.             prefix.append("|      ");
  18.         }
  19.         std::cout << node->name << " (Оценка: " << node->average_mark << ")" << std::endl;
  20.         if (node->left == nullptr && node->right == nullptr) return;
  21.         if (node->left != nullptr) print(node->left, prefix, RIGHT);
  22.         else std::cout << prefix << "|-- Л: NULL" << std::endl;
  23.         if (node->right != nullptr) print(node->right, prefix, LEFT);
  24.         else std::cout << prefix << "|-- П: NULL" << std::endl;
  25.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement