boj1266

    技术2026-05-20  6

    #include <stdlib.h>#include <stdio.h>

    typedef struct tree{ int num;  int count; struct tree *left,*right;}NODE;

    int nodenum(NODE *root){ if(root == NULL)  return 0; else  return 1+nodenum(root->left)+nodenum(root->right);}

    void visit(NODE *root,int max){ if(root != NULL) {  visit(root->left,max);  printf("%d",root->num);  if(root->num == max)   printf("/n");  else   printf(" ");  visit(root->right,max); }}

     

    int  main(){

     NODE *p,*q,*r,*pre; int n,num,i; NODE *root = NULL; int max;

     scanf("%d",&n); for(i=1;i<=n;i++) {  scanf("%d",&num);

      if(root == NULL)  {   root = (NODE *)malloc(sizeof(NODE));   root->num = num;   root->count = 1;   root->left=root->right=NULL;  }  else   {    pre = root;    p = root;    while(p != NULL)    {     if(num > p->num)     {      pre = p;      p = p->right;     }     else if(num == p->num)     {      break;     }     else     {      pre = p;      p = p->left;     }    }

        if(p != NULL)    {     p->count++;    }    else    {     q = (NODE *)malloc(sizeof(NODE));     q->num = num;     q->count = 1;     q->left=q->right = NULL;

         if(num > pre->num)      pre->right = q;     else      pre->left = q;    }     } }

     printf("%d/n",nodenum(root));

     r = root; while(r) {  pre = r;  r = r->right; }

     max = pre->num; visit(root,max);

     return 0;}

     

    最新回复(0)