4.树的实验题

nefu树
–题目来源

7075

在这里插入图片描述

#include <iostream>

using namespace std;
typedef struct tree1{
     char data;
     struct tree1 *lchild,*rchild;
}tree;
void creattree(tree* &t)
{
    char ch;
    cin>>ch;
    if(ch=='@')
        t=NULL;
    else
    {
        t=new tree;
        t->data=ch;
        creattree(t->lchild);
        creattree(t->rchild);
    }
}
int showtree(tree* &t)
{
    if(t!=NULL)
    {
        showtree(t->lchild);
        showtree(t->rchild);
        char c;
        c=t->data;
        cout<<c;
    }
    else
        return 1;

}
int main()
{
    tree *t;
    creattree(t);
    showtree(t);
    return 0;
}

7078

在这里插入图片描述

#include <iostream>

using namespace std;
typedef struct tree1{
    char data;
    struct tree1 *lchild,*rchild;
    int ltag,rtag;
}nodetree,*tree;

tree pre=NULL;

void createtree(tree &t)
{
    char ch;
    cin>>ch;
    if(ch!='@')
    {
        t=new nodetree;
        t->data=ch;
        createtree(t->lchild);
        createtree(t->rchild);
    }
    else
        t=NULL;
 }
 void connecttree(tree &t)
 {
     if(t)
     {
         connecttree(t->lchild);
         if(t->lchild!=NULL)
         {
             t->ltag=0;
         }
         else
         {
             t->ltag=1;
             t->lchild=pre;
         }
         if(pre!=NULL)
         {
             if(pre->rchild!=NULL)
            {
                t->rtag=0;
            }
            else
            {
                pre->rtag=1;
                pre->rchild=t;
            }
         }
            pre=t;
            connecttree(t->rchild);

     }
 }
 void showtree(tree &t)
 {
     tree p;
     p=t;
     while(p!=NULL)
     {
         while(p->ltag==0)
            p=p->lchild;
         cout<<p->data;
         while(p->rtag==1&&p->rchild!=NULL)
         {
             p=p->rchild;
             cout<<p->data;
         }
         p=p->rchild;
     }
}
 void show(tree &t)
 {
     if(t!=NULL)
     {
        show(t->lchild);
        printf("%c",t->data);
        show(t->rchild);
     }
 }
int main()
{
    tree t;
    createtree(t);
    connecttree(t);
    showtree(t);
    //show(t);
    return 0;
}

7079

在这里插入图片描述

#include <iostream>

using namespace std;
typedef struct tree1{
    char data;
    struct tree1 *lchild,*rchild;
    int ltag,rtag;
}nodetree,*tree;

tree pre=NULL;

void createtree(tree &t)
{
    char ch;
    cin>>ch;
    if(ch!='@')
    {
        t=new nodetree;
        t->data=ch;
        createtree(t->lchild);
        createtree(t->rchild);
    }
    else
        t=NULL;
 }

 void show(tree &t)
 {
     int i;
     tree p,s[10];
     p=t;
     i=0;
     if(t==NULL)
        return;
     do
     {
         while(p!=NULL)
         {
             s[i]=p;
             i++;
             p=p->lchild;
         }
         if(i>0)
         {
             i--;
             p=s[i];
             printf("%c",p->data);
             p=p->rchild;
         }
     }
     while(i>0||p!=NULL);
 }

int main()
{
    tree t;
    createtree(t);
    show(t);
    return 0;
}

7077

在这里插入图片描述

#include <iostream>

using namespace std;
typedef struct tree1{
    char data;
    struct tree1 *lchild,*rchild;
    int ltag,rtag;
}nodetree,*tree;

typedef struct Node {
        tree data;
        struct Node *next;
}Node, *pNode;

pNode p;

void InitQueue()
{
	p = (struct Node *)malloc(sizeof(struct Node));
	p->next = p;
}

void EnQueue(tree x)
{
    pNode r,t=p;
    r = (struct Node *)malloc(sizeof(struct Node));
    r->data=x;
    while(t->next!=p)
    {
        t=t->next;
    }
    t->next=r;
    r->next=p;
}

int isEmpty()
{
    if(p->next==p)
        return 1;
    else
        return 0;
}

void DeQueue(tree &x)
{
    pNode t=p->next;
    x=t->data;
    p->next=t->next;
    free(t);
}


void createtree(tree &t)
{
    char ch;
    cin>>ch;
    if(ch!='@')
    {
        t=new nodetree;
        t->data=ch;
        createtree(t->lchild);
        createtree(t->rchild);
    }
    else
        t=NULL;
 }

 void show(tree &t)
 {
      InitQueue();
      EnQueue(t);
      tree x;
      while(!isEmpty())
      {
          DeQueue(x);
          printf("%c",x->data);
          if(x->lchild!=NULL)
            EnQueue(x->lchild);
          if(x->rchild!=NULL)
            EnQueue(x->rchild);
      }
}
int main()
{
    tree t;
    createtree(t);
    show(t);
    return 0;
}

7076

在这里插入图片描述

#include <iostream>

using namespace std;
typedef struct tree1{
    char data;
    struct tree1 *lchild,*rchild;
}nodetree,*tree;
int i;
void createtree(tree &t)
{
    char ch;
    cin>>ch;
    if(ch!='@')
    {
        t=new nodetree;
        t->data=ch;
        createtree(t->lchild);
        createtree(t->rchild);
    }
    else
        t=NULL;

}
void show(tree &t)
{
    if(t!=NULL)
    {
        if(t->lchild==NULL&&t->rchild==NULL)
            i++;
        show(t->lchild);
        show(t->rchild);
    }
}
int main()
{
    tree t;
    createtree(t);
    show(t);
    cout<<i;
    return 0;
}

7074

在这里插入图片描述

#include <iostream>

using namespace std;

typedef struct tree1{
    char data;
    struct tree1 *lchild,*rchild;
}nodetree,*tree;

int maxdeep=0;
void createtree(tree &t)
{
    char ch;
    cin>>ch;
    if(ch!='@')
    {
        t=new nodetree;
        t->data=ch;
        createtree(t->lchild);
        createtree(t->rchild);
    }
    else
        t=NULL;
}
int max1(int a,int b)
{
    if(a>b)
        return a;
    else
        return b;
}
void deep(tree t,int nowdeep)
{
    if(t!=NULL)
    {
        maxdeep=max1(maxdeep,nowdeep);
        deep(t->lchild,nowdeep+1);
        deep(t->rchild,nowdeep+1);
    }
}
int main()
{
    tree t;
    createtree(t);
    deep(t,1);
    cout<<maxdeep;
    return 0;
}

7080

在这里插入图片描述

#include <iostream>

using namespace std;
typedef struct tree1{
    char data;
    struct tree1 *lchild,*rchild;
}nodetree,*tree;
int i;
void createtree(tree &t)
{
    char ch;
    cin>>ch;
    if(ch!='@')
    {
        t=new nodetree;
        t->data=ch;
        createtree(t->lchild);
        createtree(t->rchild);
    }
    else
        t=NULL;
}
void show(tree &t)
{
    if(t!=NULL)
    {
        if(t->lchild==NULL)
            i++;
        show(t->lchild);
        show(t->rchild);
    }
}
int main()
{
    tree t;
    createtree(t);
    show(t);
    cout<<i;
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值