標籤:二叉排序樹 c++
#include <iostream>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 (a<data && left)left->insert(a);else if (a<data && !left)left=new btree(a);else if (a>data && 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<<b->data<<" "; inorder(b->right); }}void btree::rinorder(const btree* b){ if (b != NULL) { rinorder(b->right); cout<<b->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<<endl; btree::rinorder(root); cout<<endl; delete root;}
二叉排序樹(c++實現)