二叉树

来源:互联网 发布:在淘宝上买药靠谱吗 编辑:程序博客网 时间:2024/06/15 17:30
#include <iostream>#include <cstdlib>#include <time.h>using namespace std;struct Node{int data;Node *left,*right;};class Btree{private:Node *root;public:Btree(){root=NULL;}Btree(int x[],int n);void create(int x[],int n);void insert(int x);void preOrder();void inOrder();void postOrder();int getNodeCount();int getLeafCount();private:void preOrder1(Node *node);void inOrder1(Node *node);void postOrder1(Node *node);int getNodeCount1(Node *node);int getLeafCount1(Node *node);};Btree::Btree(int x[],int n){root=NULL;create(x,n);}void Btree::insert(int x){Node *s=new Node;s->data=x;s->left=s->right=NULL;if(root==NULL)root=s;else{Node *p,*cur=root;do{p=cur;if(cur->data==x)return;else if(cur->data>x)cur=cur->left;elsecur=cur->right;}while(cur!=NULL);if(p->data>x)p->left=s;elsep->right=s;}}void Btree::create(int x[],int n){for(int i=0;i<n;i++)insert(x[i]);}void Btree::preOrder(){preOrder1(root);}void Btree::inOrder(){inOrder1(root);}void Btree::postOrder(){postOrder1(root);}void Btree::preOrder1(Node *node){if(node!=NULL){cout<<node->data<<" ";preOrder1(node->left);preOrder1(node->right);}}void Btree::inOrder1(Node *node){if(node!=NULL){inOrder1(node->left);cout<<node->data<<" ";inOrder1(node->right);}}void Btree::postOrder1(Node *node){if(node!=NULL){postOrder1(node->left);postOrder1(node->right);cout<<node->data<<" ";}}int Btree::getNodeCount(){return getNodeCount1(root);}int Btree::getNodeCount1(Node *node){if(node==NULL)return 0;return getNodeCount1(node->left)+getNodeCount1(node->right)+1;}int Btree::getLeafCount(){return getLeafCount1(root);}int Btree::getLeafCount1(Node *node){if(node==NULL)return 0;if(node->left==NULL&&node->right==NULL)return 1;return getLeafCount1(node->left)+getLeafCount1(node->right);}void main(){int data[10];srand(time(NULL));for(int i=0;i<10;i++)data[i]=rand()%100+1;//打印原始数据cout<<"original data:";for(int i=0;i<10;i++)cout<<data[i]<<" ";cout<<endl;Btree btree(data,10);cout<<"preOrder:";btree.preOrder();cout<<endl;cout<<"inOrder:";btree.inOrder();cout<<endl;cout<<"postOrder:";btree.postOrder();cout<<endl;cout<<"total node count:";cout<<btree.getNodeCount()<<endl;cout<<"total leaf count:";cout<<btree.getLeafCount()<<endl;cout<<endl;system("pause");}

原创粉丝点击