假设二叉树采用二叉链存储结构存储,设计一个算法,输出一棵给定二叉树的所有叶子结点,给出C语言代码
时间: 2024-03-01 11:21:12 浏览: 89
以下是输出给定二叉树的所有叶子结点的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
/* 定义二叉树结构体 */
typedef struct BiTNode {
int data;
struct BiTNode *lchild, *rchild;
} BiTNode, *BiTree;
/* 创建二叉树 */
void CreateBiTree(BiTree *T) {
int data;
scanf("%d", &data);
if (data == -1) {
*T = NULL;
} else {
*T = (BiTree)malloc(sizeof(BiTNode));
(*T)->data = data;
CreateBiTree(&(*T)->lchild);
CreateBiTree(&(*T)->rchild);
}
}
/* 输出叶子结点 */
void PrintLeaf(BiTree T) {
if (T) {
if (!T->lchild && !T->rchild) { /* 如果是叶子结点 */
printf("%d ", T->data);
}
PrintLeaf(T->lchild);
PrintLeaf(T->rchild);
}
}
int main() {
BiTree T = NULL;
printf("请输入二叉树的前序遍历序列,-1表示空结点:\n");
CreateBiTree(&T);
printf("叶子结点为:");
PrintLeaf(T);
printf("\n");
return 0;
}
```
在该代码中,CreateBiTree函数用于创建二叉树,PrintLeaf函数用于输出二叉树的所有叶子结点。程序首先输入二叉树的前序遍历序列,然后输出二叉树的所有叶子结点。
阅读全文