c语言写用按层次顺序遍历二叉树的方法,统计树中具有度为1的结点数目
时间: 2024-05-05 15:18:50 浏览: 18
可以使用队列来实现按层次顺序遍历二叉树,并在遍历过程中统计度为1的结点数目。
具体实现如下:
```c
// 定义二叉树结点
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
int countDegreeOneNode(TreeNode* root) {
int count = 0;
// 如果根结点为空,返回0
if (root == NULL) {
return count;
}
// 创建队列
Queue* queue = createQueue();
// 根结点入队列
enqueue(queue, root);
// 遍历队列
while (!isEmpty(queue)) {
// 出队列
TreeNode* node = dequeue(queue);
// 如果度为1,统计数量
if ((node->left == NULL && node->right != NULL) || (node->left != NULL && node->right == NULL)) {
count++;
}
// 如果有左子树,左子树入队列
if (node->left != NULL) {
enqueue(queue, node->left);
}
// 如果有右子树,右子树入队列
if (node->right != NULL) {
enqueue(queue, node->right);
}
}
// 销毁队列
destroyQueue(queue);
return count;
}
```
其中,Queue和相关操作可以自行实现,也可以使用标准库中的队列实现。