qq_37887964 2017-05-04 10:42 采纳率: 0%
浏览 1398
已采纳

二叉树建立链表的基本问题,新人求助

要求是先用数组存储字符二叉树实现前中后遍历,然后将数组改为链表存储结构前中后序遍历
不会改变存储的方法

#include<string.h>
#include<iostream>
using namespace std;
int A = 0;
typedef struct node
{
    char data;
    struct node *lchild;
    struct node *rchild;
}*BiT, BiTNode;

void preorder(char *a, int start, int end)
{

    if (start<end)
    {   
        printf("%c", a[start]);
        preorder(a, 2 * start, end);
        preorder(a, 2 * start + 1, end);
    }
}
void midorder(char *a, int start, int end)
{

    if (start<end)
    {
        midorder(a, 2 * start, end);
        printf("%c", a[start]);
        midorder(a, 2 * start + 1, end);
    }
}
void lasorder(char *a, int start, int end)
{

    if (start < end)
    {
        lasorder(a, 2 * start, end);
        lasorder(a, 2 * start + 1, end);
        printf("%c", a[start]);
    }
}
BiT crtBT(char *a,int n)
{


        char ch = a[A];
        BiT bt = new BiTNode();
        bt->data = ch;
        A++;
        bt->lchild = crtBT(a,n);
        bt->rchild = crtBT(a,n);

        return bt;

}
void pre(BiT bt)
{
    if(bt)
    {
        cout<<bt->data;
        pre(bt->lchild);
        pre(bt->rchild);
    }
}
void mid(BiT bt)
{
    if (bt)
    {
        mid(bt->lchild);
        cout << bt->data;
        mid(bt->rchild);
    }
}
void las(BiT bt)
{
    if (bt)
    {
        las(bt->lchild);

        las(bt->rchild);
        cout << bt->data;
    }

}

    void main()
    {
        int n;
        scanf("%d", &n);
        char* a = new char[n + 1];//防止输入n后的回车键的干扰
        for (int i = 0; i<n + 1; i++)
            a[i] = getchar();
        printf("前序遍历");preorder(a, 1, n + 1); printf("\n");
        printf("中序遍历"); midorder(a, 1, n + 1); printf("\n");
        printf("后序遍历"); lasorder(a, 1, n + 1); printf("\n");
        crtBT(a, n);
        BiT bt=crtBT(a,n);
        pre(bt); cout << endl;
        mid(bt); cout << endl;
        las(bt); cout << endl;
    }

  • 写回答

2条回答 默认 最新

  • 内核之道 PostgreSQL领域优质创作者 2017-05-04 12:51
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件