1 #include2 struct tree 3 { 4 int data; 5 tree *left,*right; 6 }; 7 class Btree 8 { 9 static int n; 10 static int m; 11 public: 12 tree *root; 13 Btree() 14 { 15 root=NULL; 16 } 17 void create_Btree(int); 18 void Preorder(tree *); //先序遍历 19 void inorder(tree *); //中序遍历 20 void Postorder(tree *); //后序遍历 21 void display1() {Preorder(root); cout< data=x; 34 newnode->right=newnode->left=NULL; 35 if(root==NULL) 36 root=newnode; 37 else 38 { 39 tree *back; 40 tree *current=root; 41 while(current!=NULL) 42 { 43 back=current; 44 if(current->data>x) 45 current=current->left; 46 else 47 current=current->right; 48 } 49 if(back->data>x) 50 back->left=newnode; 51 else 52 back->right=newnode; 53 } 54 } 55 int Btree::count(tree *p) 56 { 57 if(p==NULL) 58 return 0; 59 else 60 return count(p->left)+count(p->right)+1; //这是运用了函数嵌套即递归的方法。 61 } 62 void Btree::Preorder(tree *temp) //这是先序遍历二叉树,采用了递归的方法。 63 { 64 if(temp!=NULL) 65 { 66 cout< data<<" "; 67 Preorder(temp->left); 68 Preorder(temp->right); 69 } 70 } 71 void Btree::inorder(tree *temp) //这是中序遍历二叉树,采用了递归的方法。 72 { 73 if(temp!=NULL) 74 { 75 inorder(temp->left); 76 cout< data<<" "; 77 inorder(temp->right); 78 } 79 } 80 void Btree::Postorder(tree *temp) //这是后序遍历二叉树,采用了递归的方法。 81 { 82 if(temp!=NULL) 83 { 84 Postorder(temp->left); 85 Postorder(temp->right); 86 cout< data<<" "; 87 } 88 } 89 int Btree::findleaf(tree *temp) 90 { 91 if(temp==NULL)return 0; 92 else 93 { 94 if(temp->left==NULL&&temp->right==NULL)return n+=1; 95 else 96 { 97 findleaf(temp->left); 98 findleaf(temp->right); 99 }100 return n;101 }102 }103 int Btree::findnode(tree *temp)104 {105 if(temp==NULL)return 0;106 else107 {108 if(temp->left!=NULL&&temp->right!=NULL)109 {110 findnode(temp->left);111 findnode(temp->right);112 }113 if(temp->left!=NULL&&temp->right==NULL)114 {115 m+=1;116 findnode(temp->left);117 }118 if(temp->left==NULL&&temp->right!=NULL)119 {120 m+=1;121 findnode(temp->right);122 }123 }124 return m;125 }126 127 128 void main()129 {130 Btree A;131 int array[]={ 7,4,2,3,15,35,6,45,55,20,1,14,56,57,58};132 int k;133 k=sizeof(array)/sizeof(array[0]);134 cout<<"建立排序二叉树顺序: "<