6-11 先序输出叶结点 (15 分)
本题要求按照先序遍历的顺序输出给定二叉树的叶结点。
函数接口定义:
1
| void PreorderPrintLeaves( BinTree BT );
|
其中BinTree
结构定义如下:
1 2 3 4 5 6 7
| typedef struct TNode *Position; typedef Position BinTree; struct TNode{ ElementType Data; BinTree Left; BinTree Right; };
|
函数PreorderPrintLeaves
应按照先序遍历的顺序输出给定二叉树BT
的叶结点,格式为一个空格跟着一个字符。
裁判测试程序样例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| #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; }
|
输出样例(对于图中给出的树):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| void PreorderPrintLeaves(BinTree BT) { if(!BT) ; else{ if (!(BT->Left) && !(BT->Right)) { putchar(' '); putchar(BT->Data); } else { PreorderPrintLeaves(BT->Left); PreorderPrintLeaves(BT->Right); } } }
|