21xrx.com
2025-03-31 12:21:10 Monday
文章检索 我的文章 写文章
C++算法:统计二叉树叶子节点个数
2023-06-27 07:40:19 深夜i     114     0
C++ 算法 二叉树 叶子节点 统计

使用C++语言编写算法可以解决许多问题,包括统计二叉树叶子节点个数。在编写算法之前,我们需要先了解什么是二叉树和叶子节点。

二叉树是由节点组成的树形数据结构,每个节点最多有两个子节点。叶子节点指的是没有子节点的节点。

要统计二叉树叶子节点个数,我们可以使用递归的方式来实现。具体实现如下:

首先定义一个计数器count,表示叶子节点个数。然后编写递归函数countLeaf,该函数的参数为二叉树的根节点。在函数内部,我们先判断当前节点是否为空,如果为空则直接返回0。如果当前节点没有左右子节点,说明它是叶子节点,将计数器count加1。然后递归调用函数countLeaf,分别对当前节点的左右子节点进行统计。将左右子节点统计得到的叶子节点个数相加,即可得到整个二叉树的叶子节点个数。

下面是具体的代码实现:

#include <iostream>
using namespace std;
// 定义二叉树节点
struct TreeNode {
  int val;
  TreeNode* left;
  TreeNode* right;
  TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
// 统计叶子节点个数
int countLeaf(TreeNode* root) {
  int count = 0;
  if (root == NULL)
    return 0;
  
  if (root->left == NULL && root->right == NULL) {
    count++;
  }
  count += countLeaf(root->left);
  count += countLeaf(root->right);
  return count;
}
int main() {
  // 创建二叉树
  TreeNode* root = new TreeNode(1);
  root->left = new TreeNode(2);
  root->right = new TreeNode(3);
  root->left->left = new TreeNode(4);
  root->left->right = new TreeNode(5);
  // 统计叶子节点个数
  int count = countLeaf(root);
  cout << "叶子节点个数为:" << count << endl;
  return 0;
}

以上就是利用C++语言编写算法统计二叉树叶子节点个数的方法。采用递归的方式,简单易懂,代码量也比较少,是一个不错的算法。

  
  

评论区

请求出错了