鱼C论坛

 找回密码
 立即注册
查看: 2292|回复: 0

[学习笔记] 数据结构47讲三种遍历方式的实现

[复制链接]
发表于 2018-3-24 19:11:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
#include <stdlib.h>

typedef char ElemType;

typedef struct BiTNode
{
    ElemType data;
    struct BiTNode* lchild,*rchild;
}BiTNode,*BiTree;

CreateBiTree(BiTree *T)
{
    ElemType c;
    scanf("%c",&c);
    if(' '==c)
    {
        *T=NULL;
    }
    else
    {
        *T=(BiTNode*)malloc(sizeof(BiTNode));
        (*T)->data=c;
        CreateBiTree(&(*T)->lchild);
        CreateBiTree(&(*T)->rchild);
    }
}

InorderTraverse0(BiTree T,int level)
{
    if(T)
    {
        printf("%c 位于%d 层\n",T->data,level);
        InorderTraverse0(T->lchild,level+1);
        InorderTraverse0(T->rchild,level+1);
    }
}
InorderTraverse1(BiTree T,int level)
{
    if(T)
    {
        InorderTraverse1(T->lchild,level+1);
        printf("%c 位于%d 层\n",T->data,level);
        InorderTraverse1(T->rchild,level+1);
    }
}
InorderTraverse2(BiTree T,int level)
{
    if(T)
    {
        InorderTraverse2(T->lchild,level+1);
        InorderTraverse2(T->rchild,level+1);
        printf("%c 位于%d 层\n",T->data,level);
    }
}
int main()
{
    char ch;
    int level=1;
    BiTree T=NULL;
    printf("请选择遍历方式:  0为前序,1为中序,2为后序.\n");
    scanf("%c",&ch);
    printf("请按前序遍历的顺序输入节点:\n");
    fflush(stdin);
    CreateBiTree(&T);
    switch(ch)
    {
        case '0':
           InorderTraverse0(T,level);
           break;
        case '1':
          InorderTraverse1(T,level);
          break;
        case '2':
          InorderTraverse2(T,level);
          break;
        default: exit(-1);
    }
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 14:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表