PTA 6-11 先序输出叶结点

发布时间:2024年01月18日

本题要求按照先序遍历的顺序输出给定二叉树的叶结点。

函数接口定义:

void PreorderPrintLeaves( BinTree BT );

其中BinTree结构定义如下:

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

函数PreorderPrintLeaves应按照先序遍历的顺序输出给定二叉树BT的叶结点,格式为一个空格跟着一个字符。

裁判测试程序样例:

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

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

BinTree CreatBinTree(); /* 实现细节忽略 */
void PreorderPrintLeaves( BinTree BT );

int main()
{
    BinTree BT = CreatBinTree();
    printf("Leaf nodes are:");
    PreorderPrintLeaves(BT);
    printf("\n");

    return 0;
}
/* 你的代码将被嵌在这里 */

输出样例(对于图中给出的树):

Leaf nodes are: D E H I

示例代码:

void PreorderPrintLeaves( BinTree BT )
{
    BinTree tree=BT;
    if(tree!=NULL)
    {
        if(tree->Left==NULL&&tree->Right==NULL)//判断是否是叶节点
        {
            printf(" %c",tree->Data);
        }
        if(tree->Left!=NULL)
        {
            PreorderPrintLeaves(tree->Left);
        }
        if(tree->Right!=NULL)
        {
            PreorderPrintLeaves(tree->Right);
        }
    }
}

?补充说明:和之前那道二叉树遍历中的先序遍历差不多,只是多了一步判断是否为叶子结点,如果既没有左孩子,也没有右孩子,则是叶节点,需要输出该节点。

文章来源:https://blog.csdn.net/stephen_yoga/article/details/135630698
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。