C++建立二叉排序樹

#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;
} 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章