вторник, 4 августа 2015 г.

Print binary tree by levels (breadth first)


template<typename T>
struct treenode {
 treenode<T> * left, *right, *parent;
 T data;
 treenode() : left(nullptr), right(nullptr), parent(nullptr) {}
 treenode(const T& param) 
: left(nullptr), right(nullptr), parent(nullptr), data(param) {}
};

template<typename T>
void print_tree(const treenode * root) {
 if (!root) {
  std::cout << "EMPTY\r\n";
  return;
 }
 
 std::queue<const treenode<T> * > q;
 q.push(root);

 const treenode<T>* node;
 size_t sz = 0; 
 
 while ((sz = q.size()) > 0) {
  for (size_t i = 0; i < sz; ++i) {
   node = q.front();
   std::cout  << node->data  << " ";
   q.pop();
   if (node->left)
    q.push(node->left);
   if (node->right)
    q.push(node->right);
  }
  std::cout  << std::endl;
 }
}

Комментариев нет:

Отправить комментарий