在一个非空二叉树中统计叶子节点个数。 效果截图: 程序代码:
时间: 2024-03-09 16:46:47 浏览: 25
好的,下面是 Python 代码实现:
```python
# 定义二叉树节点类
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
# 统计叶子节点个数的函数
def count_leaf_node(root):
if not root:
return 0
if not root.left and not root.right:
return 1
return count_leaf_node(root.left) + count_leaf_node(root.right)
# 测试
if __name__ == '__main__':
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)
root.left.right = TreeNode(5)
root.right.left = TreeNode(6)
print(count_leaf_node(root)) # 输出 3
```
希望能够解决你的问题!
相关问题
在一个非空二叉树中统计叶子节点个数。 效果截图: C语言程序代码:
好的,下面是 C 语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点结构体
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
// 统计叶子节点个数的函数
int count_leaf_node(TreeNode* root) {
if (!root) {
return 0;
}
if (!root->left && !root->right) {
return 1;
}
return count_leaf_node(root->left) + count_leaf_node(root->right);
}
// 测试
int main() {
TreeNode* root = (TreeNode*)malloc(sizeof(TreeNode));
root->val = 1;
root->left = (TreeNode*)malloc(sizeof(TreeNode));
root->left->val = 2;
root->left->left = (TreeNode*)malloc(sizeof(TreeNode));
root->left->left->val = 4;
root->left->left->left = NULL;
root->left->left->right = NULL;
root->left->right = (TreeNode*)malloc(sizeof(TreeNode));
root->left->right->val = 5;
root->left->right->left = NULL;
root->left->right->right = NULL;
root->right = (TreeNode*)malloc(sizeof(TreeNode));
root->right->val = 3;
root->right->left = (TreeNode*)malloc(sizeof(TreeNode));
root->right->left->val = 6;
root->right->left->left = NULL;
root->right->left->right = NULL;
root->right->right = NULL;
printf("%d\n", count_leaf_node(root)); // 输出 3
return 0;
}
```
希望能够解决你的问题!
在一个非空二叉树中统计叶子节点个数 C语言代码
下面是一个简单的C语言代码,用于统计一个非空二叉树中叶子节点的个数:
```c
#include <stdio.h>
#include <stdlib.h>
// 二叉树结构体
typedef struct node {
int data;
struct node *left;
struct node *right;
} Node;
// 统计叶子节点个数的函数
int countLeafNodes(Node *root) {
if (root == NULL) {
return 0;
} else if (root->left == NULL && root->right == NULL) {
return 1;
} else {
return countLeafNodes(root->left) + countLeafNodes(root->right);
}
}
int main() {
// 创建一个二叉树
Node *root = (Node*) malloc(sizeof(Node));
root->data = 1;
root->left = (Node*) malloc(sizeof(Node));
root->left->data = 2;
root->right = (Node*) malloc(sizeof(Node));
root->right->data = 3;
root->left->left = (Node*) malloc(sizeof(Node));
root->left->left->data = 4;
root->left->right = (Node*) malloc(sizeof(Node));
root->left->right->data = 5;
root->right->left = (Node*) malloc(sizeof(Node));
root->right->left->data = 6;
root->right->right = (Node*) malloc(sizeof(Node));
root->right->right->data = 7;
// 统计叶子节点个数
int leafNodes = countLeafNodes(root);
printf("Leaf nodes: %d\n", leafNodes);
return 0;
}
```
在上述代码中,我们定义了一个二叉树结构体 `Node`,包含一个整数值 `data`,以及左右子节点的指针。我们使用递归的方式统计叶子节点的个数,如果当前节点为空,则返回0;如果当前节点左右子节点都为空,则返回1;否则递归遍历左右子树,并将结果相加。最后在 `main` 函数中创建一个二叉树,并调用 `countLeafNodes` 函数统计叶子节点的个数。