二叉排序樹(c++實現)
#include
using namespace std;
class btree
{
public:
btree *left;
btree *right;
int data;
btree(int i):left(NULL),right(NULL),data(i){}
~btree();
void insert(int a);
static void inorder(const btree*);//中序遍歷
static void rinorder(const btree*);//中序遍歷,先遍歷右子樹
};
void btree::insert(int a)
{
if (ainsert(a);
else if (adata && right)
right->insert(a);
else if (a>data && !right)
right=new btree(a);
}
void btree::inorder(const btree* b)
{
if (b != NULL)
{
inorder(b->left);
cout<data<<" ";
inorder(b->right);
}
}
void btree::rinorder(const btree* b)
{
if (b != NULL)
{
rinorder(b->right);
cout<data<<" ";
rinorder(b->left);
}
}
btree::~btree()
{
if (left)
delete left;
if (right)
delete right;
}
void main()
{
int zu[]={45,1,9,12,8,4821,4,5,1651,51};
btree *root=new btree(zu[0]);
for (int i = 1; i < 10; ++i)
{
root->insert(zu[i]);
}
btree::inorder(root);
cout<