二叉树的基本操作(四道基础题)

这篇博客详细介绍了二叉树的四种遍历方法:层次遍历、求高度、中序遍历、前序遍历、后序遍历和先序打印叶节点,并提供了相应的代码实现。通过这些基础题目,帮助读者深入理解二叉树的操作。

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

6-1 Level-order Traversal (25分)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
题意
编写一个例程以“层次顺序”列出二叉树的节点。列出根节点,然后列出深度为1的节点,然后是深度为2的节点,依此类推。你必须用线性时间来做这个。
思路
先判断数是否为空树,空树则无需打印,直接return;
由于最大节点数是MaxTree,我们先开一个结构体指针数组tree[MaxTree],由于树现在已经非空,我们让tree[0]指向第一个节点,
当head < taill时,说明树的节点还没被访问完,以此为循环条件,先打印此时的结点值(直到打印到最后一个节点,此时tail不再增加,head++,使得head == tail,循环结束),再判断节点左右子树是否为空,一层层用tail把后面的树节点接到数组里。
代码

void Level_order ( Tree T, void (*visit)(Tree ThisNode) ){
   
    if(T ==  NULL)
        return ;
    Tree tree[MaxTree];
    int head = 0, tail = 1;
    tree[0] = T;
    while(head < tail){
   
        (*visit)(tree[head]);
        if(tree[head]->Left)
            tree[tail++] = tree[head]->Left;
        if(tree[head]-
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值