1 条题解

  • 0
    @ 2025-2-14 21:26:47

    C :

    #include "stdio.h"
    #include "string.h"
    
    
    struct node
    {
    	 char key;
    	 int left;
    	 int right;
    	 int father;
    };
    
    
    struct node tree[100000];
    int head,sum;
    
    
    
    void xianxu(int n)
    {
    	if (n==-1) return;
    	if (n==0) return;
    	if (n>0) printf("%c",tree[n].key);
    	if (tree[n].left>=0) xianxu(tree[n].left);
    	if (tree[n].right>=0) xianxu(tree[n].right);
    }
    
    void zhongxu(int n)
    {
    	if (n==-1) return;
    	if (n==0) return;
    	if (tree[n].left>=0) zhongxu(tree[n].left);
    	if (n>0) printf("%c",tree[n].key);
    	if (tree[n].right>=0) zhongxu(tree[n].right);
    }
    
    
    int insert(int n,char key)
    {
    	if (n==-1)
    	{
    		sum++;
    	    head=sum;
    		tree[head].father=0;
    		tree[head].left=-1;
    		tree[head].right=-1;
    		tree[head].key=key;
    		return(1);
    	}
    	if (tree[n].left==-1) 
    	{
    		if (key=='^') tree[n].left=0;			
    		else
    		{
    	    	sum++;
    			tree[n].left=sum;
    	    	tree[sum].father=n;
    	    	tree[sum].left=-1;
    	    	tree[sum].right=-1;
    	    	tree[sum].key=key;
    		}
    		return(1);
    	}
    	if ((tree[n].left>0) &&(insert(tree[n].left,key)==1)) return;
    	if (tree[n].right==-1) 
    	{
    		if (key=='^') tree[n].right=0;			
    		else
    		{
    	    	sum++;
    			tree[n].right=sum;
    	    	tree[sum].father=n;
    	    	tree[sum].left=-1;
    	    	tree[sum].right=-1;
    	    	tree[sum].key=key;
    		}
    		return(1);
    	}
    	if ((tree[n].right>0) &&(insert(tree[n].right,key)==1)) return;
    }
    
    
    void main()
    {
    	int i;
    	char str[100];
    	gets(str);
    	while (1)
    	{
        	sum=0;
        	head=-1;
        	for (i=0;i<strlen(str);i++)
        	{
        		insert(head,str[i]);
        	}
        	xianxu(head);
    		printf("\n");
        	zhongxu(head);
    		printf("\n");
    		gets(str);
    		if ((str[0]=='^')&&(strlen(str)==1)) break;
    	}
    
    }
    

    C++ :

    #include <stdio.h> 
    #include <malloc.h>
    typedef struct BiTNode{
      char data;
      struct BiTNode *lchild,*rchild;
    }BitNode, *BiTree;
    BiTree CreateBiTree()
    {
      char da;
      BiTree T;
      do{
      scanf("%c",&da);
      }while(da<=32);
      if(da == '^')T=NULL;
      else{
       T=(BiTree)malloc(sizeof(BiTNode));
        T->data=da;
        T->lchild=CreateBiTree();
        T->rchild=CreateBiTree();
       }
      return T;
    }
    void PreOrderTraverse(BiTree T){
      if(T){
           printf("%c",T->data);
           PreOrderTraverse(T->lchild);
           PreOrderTraverse(T->rchild);
    }
    }
    void InOrderTraverse(BiTree T){
        if(T){
           InOrderTraverse(T->lchild);
           printf("%c",T->data);
           InOrderTraverse(T->rchild);
     }
    }
    int main(){
     BiTree btree;
      do{
        btree=CreateBiTree();
        if(btree!=NULL){
        PreOrderTraverse(btree);
     printf("\n");
     InOrderTraverse(btree);
     printf("\n");
        }
      }while(btree!=NULL);
      return 0;
    }
    
     
    
     
    
    • 1

    数据结构/二叉树/创建与遍历(软件1、2)

    信息

    ID
    917
    时间
    1000ms
    内存
    8MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者