标签:
1 #include <iostream> 2 using namespace std; 3 typedef struct node 4 { 5 int value; 6 node *lchild,*rchild; 7 }*bitree,binode; 8 /*寻找要插入的双亲结点*/ 9 bool searchBSD(bitree root,int data,bitree f,bitree &p) /*传引用,f为双亲结点*/ 10 { 11 if(!root) 12 { 13 p=f; 14 return false; 15 } 16 else if(root->value==data) 17 { 18 p=root; 19 return false; 20 } 21 else if(data<root->value) 22 return searchBSD(root->lchild,data,root,p); 23 else 24 return searchBSD(root->rchild,data,root,p); 25 } 26 void InsertBST(bitree &root,int data) /*结点插入*/ 27 { 28 bitree p,temp; /*p为被插入的结点,temp为即将插入的结点*/ 29 if(!searchBSD(root,data,NULL,p)) 30 { 31 temp=new binode; 32 temp->value=data; 33 temp->rchild=temp->lchild=NULL; 34 if(p==NULL) 35 root=temp; 36 else if(p->value>data) 37 p->lchild=temp; 38 else 39 p->rchild=temp; 40 } 41 } 42 void InOrderTraverse(bitree root) /*中序遍历二叉搜索树*/ 43 { 44 if(root) 45 { 46 InOrderTraverse(root->lchild); 47 cout<<root->value<<" "; 48 InOrderTraverse(root->rchild); 49 } 50 } 51 int main(int argc, char const *argv[]) 52 { 53 bitree root; 54 int n; 55 int a[100]; 56 while(cin>>n) 57 { 58 root=NULL; 59 for(int i=0;i<n;i++) 60 { 61 cin>>a[i]; 62 InsertBST(root,a[i]); 63 } 64 InOrderTraverse(root); 65 } 66 67 return 0; 68 }
标签:
原文地址:http://www.cnblogs.com/a1225234/p/4782296.html