Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (13.29 KB, 3 trang )
<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>
#include <iostream.h>
#include <iomanip.h>
typedef struct nodet {
elem data;
struct nodet *left, *right;
} node;
typedef node *tree;
void inserttree(tree &t, elem x, int (*comp)(elem, elem))
{
if (t==NULL)
{
t = new node;
memcpy(&t->data, &x, sizeof(elem));
t->left = t->right = NULL;
}
else
if (comp(x,t->data)<0)
inserttree(t->left, x, comp);
else
if (comp(x,t->data)>0)
void del(tree &r, tree &q)
{
if (r->right!=NULL)
del(r->right, q);
else
{
q->data = r->data;
q = r;
r = r->left;
}
}
void deletetree(tree &t, elem x, int (*comp)(elem, elem))
{
if (t!=NULL)
if ((comp(x,t->data)<0))
deletetree(t->left, x, comp);
else
if ((comp(x,t->data)>0))
deletetree(t->right, x, comp);
else
{
tree q = t;
else
if (t->left==NULL)
t = t->right;
else
del(t->left, q);
delete q;
}
}
tree searchtree(tree t, elem x, int (*comp)(elem, elem))
{
if (t==NULL)
return NULL;
if ((comp(x,t->data)<0))
return searchtree(t->left, x, comp);
if ((comp(x,t->data)>0))
return searchtree (t->right, x, comp);
return t;