#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;
}
/* 创建二叉树的实现 */
BinTree CreatBinTree() {
/* 创建如下结构的二叉树:
A
/ \
B C
/ \ /
D E F
/ \
G H
/
I
*/
BinTree A = (BinTree)malloc(sizeof(struct TNode));
A->Data = 'A';
BinTree B = (BinTree)malloc(sizeof(struct TNode));
B->Data = 'B';
BinTree C = (BinTree)malloc(sizeof(struct TNode));
C->Data = 'C';
BinTree D = (BinTree)malloc(sizeof(struct TNode));
D->Data = 'D';
D->Left = D->Right = NULL;
BinTree E = (BinTree)malloc(sizeof(struct TNode));
E->Data = 'E';
BinTree F = (BinTree)malloc(sizeof(struct TNode));
F->Data = 'F';
F->Left = F->Right = NULL;
BinTree G = (BinTree)malloc(sizeof(struct TNode));
G->Data = 'G';
BinTree H = (BinTree)malloc(sizeof(struct TNode));
H->Data = 'H';
H->Left = H->Right = NULL;
BinTree I = (BinTree)malloc(sizeof(struct TNode));
I->Data = 'I';
I->Left = I->Right = NULL;
A->Left = B;
A->Right = C;
B->Left = D;
B->Right = E;
C->Left = F;
C->Right = NULL;
E->Left = G;
E->Right = H;
G->Left = I;
G->Right = NULL;
return A;
}
/* 前序遍历打印叶子节点 */
void PreorderPrintLeaves(BinTree BT) {
if (BT) {
if (!BT->Left && !BT->Right) {
printf(" %c", BT->Data);
}
PreorderPrintLeaves(BT->Left);
PreorderPrintLeaves(BT->Right);
}
}
正文完