c语言层次遍历实现叶子结点数的统计
时间: 2023-09-02 18:12:53 浏览: 64
下面是一种使用队列实现 C 语言二叉树层次遍历并统计叶子结点数的方法:
```c
#include <stdio.h>
#include <stdlib.h>
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
int countLeafNodes(struct TreeNode *root) {
if (root == NULL) {
return 0;
}
int count = 0;
struct TreeNode *queue[1000]; // 假设二叉树最多有 1000 个结点
int front = 0, rear = 0;
queue[rear++] = root;
while (front < rear) {
struct TreeNode *node = queue[front++];
if (node->left == NULL && node->right == NULL) {
count++;
}
if (node->left != NULL) {
queue[rear++] = node->left;
}
if (node->right != NULL) {
queue[rear++] = node->right;
}
}
return count;
}
```
这里使用了一个队列来辅助层次遍历,当遍历到叶子结点时,计数器加一。最后返回计数器的值即可。