1043. Is It a Binary Search Tree (25)

    xiaoxiao2021-08-21  76

    #include<iostream> #include<vector> using namespace std; struct node{ int data; node* lchild; node* rchild; }; vector<int> insert,pre,post,mirpre,mirpost; int n; void insertnode(node* &root,int data){ if(root==NULL){ root=new node; root->data=data; root->lchild=root->rchild=NULL; return; } if(data<root->data){ insertnode(root->lchild,data); } else{ insertnode(root->rchild,data); } } void postorder(node* root){ if(root==NULL){ return; } postorder(root->lchild); postorder(root->rchild); post.push_back(root->data); } void preorder(node* root){ if(root==NULL){ return; } pre.push_back(root->data); preorder(root->lchild); preorder(root->rchild); } void mirpreorder(node* root){ if(root==NULL){ return; } mirpre.push_back(root->data); mirpreorder(root->rchild); mirpreorder(root->lchild); } void mirpostorder(node* root){ if(root==NULL){ return; } mirpostorder(root->rchild); mirpostorder(root->lchild); mirpost.push_back(root->data); } int main(){ node* root=NULL; cin>>n; for(int i=0;i<n;i++){ int data; cin>>data; insert.push_back(data); insertnode(root,data); } preorder(root); postorder(root); mirpreorder(root); mirpostorder(root); if(insert==pre){ cout<<"YES"<<endl; cout<<post[0]; for(int i=1;i<post.size();i++){ cout<<" "<<post[i]; } } else if(insert==mirpre){ cout<<"YES"<<endl; cout<<mirpost[0]; for(int i=1;i<mirpost.size();i++){ cout<<" "<<mirpost[i]; } } else{ cout<<"NO"<<endl; } return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-676776.html

    最新回复(0)