#include using namespace std; struct node { char val; int count; struct node *l, *r; }; struct node *newNode(char item) { struct node *data = new node(); data->val = item; data->l =NULL; data->r = NULL; data->count = 1; return data; } void function (struct node *base) { if (base != NULL) { if(base->count==1){ function(base->l); cout << base->val << " "; function(base->r); } else{ for(int i=1;i<=base->count;i++) cout << base->val << " "; function(base->l); function(base->r); } } } void inorder (struct node *base) { if (base != NULL){ inorder(base->l); cout << base->val << "(" << base->count << ") "; inorder(base->r); } } struct node* ins_func (struct node* node, char val) { if (node == NULL) return newNode(val); if (val == node->val){ (node->count)++; return node; } if (val< node->val){ node->l = ins_func(node->l, val); } else node->r = ins_func(node->r, val); return node; } struct node * mv_node (struct node* node) { struct node* crnt = node; while (crnt->l != NULL) crnt = crnt->l; return crnt; } struct node* del_node (struct node* base, char val)//delete funtion { if (base == NULL) return base; if (val < base->val) base->l = del_node(base->l, val); else if (val > base->val) base->r = del_node(base->r, val); else{ if (base->count > 1){ (base->count)--; return base; } if (base->l == NULL){ struct node *data = base->r; delete(base); return data; } else if (base->r == NULL){ struct node *data = base->l; delete(base); return data; } struct node* data = mv_node(base->r); base->val = data->val; base->r = del_node(base->r, data->val); } return base; } int main() { struct node *base = NULL; char a; cout << "Enter characters for your tree: \n (0 for exit):"<> a; while (a != '0') { base=ins_func (base,a); cin >> a; } cout << "\nInorder traversal: " << endl; function (base); cout<> b; cout<> b; } cout<