二叉树的遍历

本文详细介绍了二叉树的四种遍历方法:中序、前序、后序及层次遍历,并提供了完整的C语言实现代码。每种遍历方式都有其独特的访问节点顺序,适合不同的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本题要求给定二叉树的4种遍历。

函数接口定义:

void InorderTraversal( BinTree BT );
void PreorderTraversal( BinTree BT );
void PostorderTraversal( BinTree BT );
void LevelorderTraversal( BinTree BT );

其中BinTree结构定义如下:

typedef struct TNode *Position;
typedef Position BinTree;
struct TNode{
    ElementType Data;
    BinTree Left;
    BinTree Right;
};

要求4个函数分别按照访问顺序打印出结点的内容,格式为一个空格跟着一个字符。


实现:

void InorderTraversal( BinTree BT )
{
    if (BT == NULL)
        return ;
    InorderTraversal(BT->Left);
    printf(" %c", BT->Data);
    InorderTraversal(BT->Right);
}

void PreorderTraversal( BinTree BT )
{
    if (BT == NULL)
        return ;
    printf(" %c", BT->Data);
    PreorderTraversal(BT->Left);
    PreorderTraversal(BT->Right);
}

void PostorderTraversal( BinTree BT )
{
    if (BT == NULL)
        return ;
    PostorderTraversal(BT->Left);
    PostorderTraversal(BT->Right);
    printf(" %c", BT->Data);
}

void LevelorderTraversal( BinTree BT )
{
    BinTree *que;
    int head = 0, tail = 0;
    if (BT == NULL)
        return ;
    que = (BinTree *)malloc(sizeof(struct TNode) * 100);
    que[tail++] = BT;
    while (head != tail) {
        BinTree now = que[head++];
        printf(" %c", now->Data);
        if (now->Left != NULL)
            que[tail++] = now->Left;
        if (now->Right != NULL)
            que[tail++] = now->Right;
    }
    free(que);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值