本题要求按照先序遍历顺序输出给定二叉树的叶节点
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) { if (BT) { if (BT->Left == NULL && BT->Right == NULL) /* 如果没有左子树也没有右子树,则说明是叶子结点 */ printf(" %c", BT->Data); /* 输出叶子结点 */ PreorderPrintLeaves(BT->Left); PreorderPrintLeaves(BT->Right); } }