21xrx.com
2024-09-19 09:31:47 Thursday
登录
文章检索 我的文章 写文章
C++算法:统计二叉树叶子节点个数
2023-06-27 07:40:19 深夜i     --     --
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++语言编写算法统计二叉树叶子节点个数的方法。采用递归的方式,简单易懂,代码量也比较少,是一个不错的算法。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复