#include #include using namespace std; template struct Node{ public: Node(){ left = right = 0; } Node(const T& data_in){ value = data_in; left = right = 0; } T value; Node *left, *right; }; template class BinaryTree{ public: BinaryTree(){ root = 0; } bool insert(const T& in_value){ if(root == 0){ root = new Node(in_value); }else{ Node *temp = root, *temp_old; while(temp != 0){ temp_old = temp; if(temp->value = in_value){ return false; }else if (temp->value < in_value){ temp = temp->right; }else if (temp->value > in_value){ temp = temp->left; } } Node *new_node; new_node = new Node(in_value); if (temp_old->value > in_value){ temp_old->left = new_node; }else{ temp_old->right = new_node; } } return true; } void preorder_print(){ queue< Node > new_queue; Node *temp; new_queue.push(*root); while(!new_queue.empty()){ *temp = new_queue.front(); new_queue.pop(); cout << temp->value; new_queue.push(*temp->left); new_queue.push(*temp->right); } } Node *root; }; int main(){ BinaryTree int_tree; int a=1,b=2,c=3; int_tree.insert(b); int_tree.insert(a); int_tree.insert(c); int_tree.preorder_print(); return 0; };