1 solutions

  • 0
    @ 2024-12-10 22:44:38

    C :

    #include <stdio.h>
    #include <stdlib.h>
    typedef struct TNode{
    	char data;
    	struct TNode *left,*right;
    }TNode,*BTree;
    int index=0;
    char c[101];
    void create(BTree *t){
    	if (c[index]=='#'||c[index]==' ')
    	{
    		index++;
    		*t=NULL;
    	}else{
    		*t=(TNode*)malloc(sizeof(TNode));
    		(*t)->data=c[index];
    		index++;
    		create(&(*t)->left);
    		create(&(*t)->right);
    	}
    }
    void remove_tree(BTree t){
    	if (t)
    	{
    		remove_tree(t->left);
    		remove_tree(t->right);
    		free(t);
    	}
    }
    void inorder(BTree t){
    	if (t)
    	{
    		inorder(t->left);
    		printf("%c ",t->data);
    		inorder(t->right);
    	}
    }
    int main(){
    	BTree t;
    //	freopen("1.txt","r",stdin);
    	while (scanf("%s",c)!=EOF)
    	{
    		index=0;
    		create(&t);
    		inorder(t);
    		remove_tree(t);
    		printf("\n");
    	}
    //	fclose(stdin);
    	return 0;
    }
    

    C++ :

    #include <stdio.h>
    #include <stdlib.h>
     
    char cache[101];
     
    typedef struct Node
    {
        char data;
        struct Node * lchild,* rchild;
    };
    struct Node * root;
    int cnt;
     
    struct Node * Build_tree()
    {
        struct Node * root;
        if(cache[cnt++] == '#') root = NULL;
        else
        {
            root = (struct Node *)malloc(sizeof(struct Node));
            root -> data = cache[cnt - 1];
            root -> lchild = Build_tree();
            root -> rchild = Build_tree();
        }
        return root;
    }
    void in_order(struct Node *root)
    {
        if(root != NULL)
        {
            in_order(root -> lchild);
            printf("%c ",root -> data);
            in_order(root -> rchild);
        }
    }
    void clean(struct Node *root)
    {
        if(root != NULL)
        {
            clean(root -> lchild);
            clean(root -> rchild);
            free(root);
        }
    }
    int main()
    {
        int i;
        while(scanf("%s",cache) != EOF)
        {
            cnt = 0;
            root = Build_tree();
            in_order(root);
            clean(root);
            printf("\n");
        }
        return 0;
    }
    

    Pascal :

    program acmshuu;
    type piont=^node;
         node=record
           left:piont;
           root:char;
           right:piont;
         end;
    var n,ch:char;
    zh:piont;
    
    procedure init(zh:piont);
     var p:piont;
      begin
        read(ch);
        if ch='#' then zh^.left:=nil
         else
         begin
           new(p);
           zh^.left:=p;
           p^.root:=ch;
           init(p);
         end;
        read(ch);
        if ch='#' then zh^.right:=nil
         else
          begin
           new(p);
           zh^.right:=p;
           p^.root:=ch;
           init(p);
          end;
      end;
    
    procedure bianli(zh:piont);
      begin
        if zh^.left<>nil then bianli(zh^.left);
        write(zh^.root,' ');
        if zh^.right<>nil then bianli(zh^.right);
      end;
    
    begin
      while not eof do
        begin
          new(zh);
          read(n);
          zh^.root:=n;
          init(zh);
          readln;
          bianli(zh);
          writeln;
        end;
    end.
    
    • 1

    Information

    ID
    567
    Time
    1000ms
    Memory
    32MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By