#include<bits/stdc++.h>
using namespace std;
class Node{
public:
Node* left;
Node* right;
int content;
Node(){
left=NULL;
right=NULL;
}
Node(int value){
left=NULL;
right=NULL;
content=value;
}
};
void postOrder(Node* T){
if(T!=NULL){
if(T->left!=NULL) postOrder(T->left);
if(T->right!=NULL) postOrder(T->right);
printf("%d ",T->content);
}
}
void preOrder(Node* T){
if(T!=NULL){
printf("%d ",T->content);
if(T->left!=NULL) preOrder(T->left);
if(T->right!=NULL) preOrder(T->right);
}
}
void inOrder(Node* T){
if(T!=NULL){
if(T->left!=NULL) inOrder(T->left);
printf("%d ",T->content);
if(T->right!=NULL) inOrder(T->right);
}
}
int arr[101];
void insertHelper(Node* & t,int val){
if(t==NULL) t=new Node(val);
else{
if(val>t->content) insertHelper(t->right,val);
else if(val<t->content) insertHelper(t->left,val);
else return;
}
}
Node* build(int num){
Node* root=NULL;
for(int i=0;i<num;i++){
insertHelper(root,arr[i]);
}
return root;
}
int main(){
int num;
int val,temp1,temp2;
while(scanf("%d",&num)!=EOF){
for(int i=0;i<num;i++) scanf("%d",&arr[i]);
Node* T=build(num);
preOrder(T);
printf("\n");
inOrder(T);
printf("\n");
postOrder(T);
printf("\n");
}
return 0;
}
C++建立二叉排序樹
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.