统计二叉树中叶子结点的个数,计算二叉树的深度
时间: 2023-11-13 10:07:53 浏览: 84
计算二叉树中叶子节点的个数:
可以通过递归方式完成:
```
int count_leaf(TreeNode* root) {
if (root == nullptr) return 0;
if (root->left == nullptr && root->right == nullptr) return 1;
return count_leaf(root->left) + count_leaf(root->right);
}
```
计算二叉树的深度:
同样可以通过递归方式完成:
```
int count_depth(TreeNode* root) {
if (root == nullptr) return 0;
return max(count_depth(root->left), count_depth(root->right)) + 1;
}
```
注意,以上代码仅供参考,具体实现可能需要根据实际情况进行修改。
相关问题
【二叉树】统计二叉树中叶子结点的个数
二叉树是一种非常常见的数据结构,它由节点和边组成,每个节点最多只有两个子节点,分别为左子节点和右子节点。叶子节点指的是没有子节点的节点,统计二叉树中叶子节点的个数可以通过递归方式实现,具体思路如下:
1. 如果当前节点为空,则叶子节点数量为0;
2. 如果当前节点没有左右子节点,则它是叶子节点,数量为1;
3. 如果当前节点有左子节点,则统计左子树中叶子节点数量;
4. 如果当前节点有右子节点,则统计右子树中叶子节点数量;
5. 当前节点的叶子节点数量为左右子树中叶子节点数量之和。
以下是一个示例代码:
```
int countLeafNodes(TreeNode* root) {
if (root == NULL) {
return 0;
}
if (root->left == NULL && root->right == NULL) {
return 1;
}
int leftCount = countLeafNodes(root->left);
int rightCount = countLeafNodes(root->right);
return leftCount + rightCount;
}
```
用c语言写出程序:统计二叉树中叶子结点的个数
当然,以下是用C语言编写的程序来统计二叉树中叶子节点的个数:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树的结构
struct Node {
int data;
struct Node* left;
struct Node* right;
};
// 创建新节点
struct Node* createNode(int data) {
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
if (newNode == NULL) {
printf("内存分配失败\n");
exit(1);
}
newNode->data = data;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
// 统计叶子节点的个数
int countLeaves(struct Node* root) {
if (root == NULL) {
return 0;
}
if (root->left == NULL && root->right == NULL) {
return 1;
}
return countLeaves(root->left) + countLeaves(root->right);
}
int main() {
// 创建二叉树
struct Node* root = createNode(1);
root->left = createNode(2);
root->right = createNode(3);
root->left->left = createNode(4);
root->left->right = createNode(5);
// 统计叶子节点的个数
int numLeaves = countLeaves(root);
printf("叶子节点的个数为:%d\n", numLeaves);
return 0;
}
```
以上程序创建了一个二叉树,并使用递归方法统计二叉树中叶子节点的个数。在这个例子中,二叉树的叶子节点个数为3个。
阅读全文