爱问知识人 爱问教育 医院库

数据结构代码(用C语言) 二叉树的操作

首页

数据结构代码(用C语言) 二叉树的操作

要求采用二叉链表作为存储结构,完成二叉树的建立,先序,中序和后序以及按层次遍历的操作,求所有叶子及节点总数的操作

提交回答

全部答案

    2018-05-21 04:35:36
  •   # include 
    # include
    struct BTNode
    {
    int data;
    struct BTNode * pLchild;//p是指针,L是左,child是孩子
    struct BTNode * pRchild;
    };
    //函数声明
    struct BTNode * CreateBTree(void);//创建树
    void PreTraverseBTree(struct BTNode * pT);//先序遍历
    void InTraverseBTree(struct BTNode * pT);//中序遍历
    void PostTraverseBTree(struct BTNode * pT);//后续遍历
    int main(void)
    {
    struct BTNode * pT = CreateBTree();
    PreTraverseBTree(pT);
    printf(" ");
    InTraverseBTree(pT);
    printf(" ");
    PostTraverseBTree(pT);
    return 0;
    }
    //创建树
    struct BTNode * CreateBTree(void)
    {
    struct BTNode * pA = (struct BTNode * )malloc(sizeof(BTNode));
    struct BTNode * pB = (struct BTNode * )malloc(sizeof(BTNode));
    struct BTNode * pC = (struct BTNode * )malloc(sizeof(BTNode));
    struct BTNode * pD = (struct BTNode * )malloc(sizeof(BTNode));
    struct BTNode * pE = (struct BTNode * )malloc(sizeof(BTNode));
    pA->data = 'A';
    pB->data = 'B';
    pC->data = 'C';
    pD->data = 'D';
    pE->data = 'E';
    pA->pLchild = pB;
    pA->pRchild = pC;
    pB->pLchild = NULL;
    pB->pRchild = NULL;
    pC->pLchild = pD;
    pC->pRchild = NULL;
    pD->pLchild = NULL;
    pD->pRchild = pE;
    pE->pLchild = NULL;
    pE->pRchild = NULL;
    return pA;
    }
    //先序遍历
    void PreTraverseBTree(struct BTNode * pT)
    { //先访问根节点,再先序访问左子树,最后先序访问右子树
    if ( pT != NULL)
    {
    printf("%c ",pT->data);//访问根节点
    //pT->pLchild可以代表整个左子树
    PreTraverseBTree(pT->pLchild);
    PreTraverseBTree(pT->pRchild);
    }
    return;
    }
    //中序遍历
    void InTraverseBTree(struct BTNode * pT)
    {
    if(pT != NULL )
    {
    if (NULL != pT->pLchild)
    {
    InTraverseBTree(pT->pLchild);
    }
    printf("%c ",pT->data);
    if (NULL != pT->pRchild)
    {
    InTraverseBTree(pT->pRchild);
    }
    }
    return;
    }
    //后续遍历
    void PostTraverseBTree(struct BTNode * pT)
    {
    if(pT != NULL )
    {
    if (NULL != pT->pLchild)
    {
    PostTraverseBTree(pT->pLchild);
    }
    if (NULL != pT->pRchild)
    {
    PostTraverseBTree(pT->pRchild);
    }
    printf("%c ",pT->data);
    }
    return;
    }。
      

    李***

    2018-05-21 04:35:36

类似问题

换一换

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 178-197
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):