丘丘3332 2021-12-06 22:59 采纳率: 100%
浏览 93
已结题

二叉树的遍历,用C语言怎么写?

给定一棵大小为n的树,分别输出该树的前序遍历、中序遍历、后序遍历。(其中二叉树的根始终为0号节点)
输入:
输入第一行一个整数n代表树的大小
接下来n行每行三个整数,分别代表节点的下标,以及该节点左儿子的下标和右儿子的下标。其中-1代表节点为NULL
输入样例:
7
0 1 2
1 -1 -1
2 3 4
3 -1 5
4 -1 -1
5 6 -1
以及,输入样例是按层建立树吗?

  • 写回答

1条回答 默认 最新

  • 关注

    你题目的解答代码如下:

    #include <stdio.h>
    #include <malloc.h>
    #include <stdlib.h>
    typedef struct BiTNode
    {
        int data;
        struct BiTNode *lchild, *rchild;
    } BiTNode, *BiTree;
    
    
    int PreOrder(BiTree T)
    {
        if (!T)
            return 0;
        printf("%d ", T->data);
        PreOrder(T->lchild);
        PreOrder(T->rchild);
        return 1;
    }
    int InOrder(BiTree T)
    {
        if (!T)
            return 0;
        InOrder(T->lchild);
        printf("%d ", T->data);
        InOrder(T->rchild);
        return 1;
    }
    int PostOrder(BiTree T)
    {
        if (!T)
            return 0;
        PostOrder(T->lchild);
        PostOrder(T->rchild);
        printf("%d ", T->data);
        return 1;
    }
    void main()
    {
        int n,i,k,l,r;
        BiTree T,p;
        scanf("%d", &n);
        BiTree *a[n];
        a[0] = &T;
        for (i = 0; i < n; i++)
        {
            scanf("%d%d%d", &k, &l, &r);
            p = (BiTNode *)malloc(sizeof(BiTNode));
            p->lchild = NULL;
            p->rchild = NULL;
            p->data = k;
            *(a[k]) = p;
            if (l!=-1)
                a[l] = &p->lchild;
            if (r!=-1)
                a[r] = &p->rchild;
        }
        printf("先序遍历:");
        PreOrder(T);
        printf("\n中序遍历:");
        InOrder(T);
        printf("\n后序遍历:");
        PostOrder(T);
    }
    

    如有帮助,望采纳!谢谢!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月15日
  • 已采纳回答 12月7日
  • 修改了问题 12月7日
  • 修改了问题 12月7日
  • 展开全部

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料