C++建立二叉排序树

    xiaoxiao2021-03-25  207

    #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; }
    转载请注明原文地址: https://ju.6miu.com/read-1982.html

    最新回复(0)