#include <iostream>
#include <algorithm>
using namespace std;
/*class TreeNode
{
public:
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int val)
{
this->val = val;
this->left = NULL;
this->right = NULL;
}
};
*/
struct TreeNode
{
int val;
TreeNode* left;
TreeNode* right;
};
void insert(TreeNode** node, int val)
{
TreeNode* temp = NULL;
if (!(*node))
{
temp = (TreeNode*)malloc(sizeof(TreeNode));
temp->left = NULL;
temp->right = NULL;
temp->val = val;
*node = temp;
return;
}
if (val < (*node)->val)
{
insert(&(*node)->left,val);
}
else if (val > (*node)->val)
{
insert(&(*node)->right, val);
}
}
void deltree(TreeNode* node)
{
if (node)
{
deltree(node->left);
deltree(node->right);
free(node);
}
}
void print_preorder(TreeNode* node)
{
if (!(node)) return;
cout << node->val << " "