数据结构C++统计二叉树的叶结点个数算法思考
时间: 2024-12-18 09:20:04 浏览: 2
数据结构C++版-二叉树实验-使用类模板的方式实现
在C++中,统计二叉树的叶节点个数通常涉及深度优先搜索(Depth-First Search, DFS)策略,特别是前序遍历或后序遍历。因为对于每个叶子节点(没有孩子的节点),在其访问过程中可以直接计数。以下是简单的算法思路:
1. 定义一个函数`countLeaves(TreeNode* root)`,接受一个二叉树的根节点作为输入。
2. 如果根节点为空,返回0表示空树没有叶子节点。
3. 如果根节点不是叶子节点(即有左孩子或右孩子),递归地对左右子树分别调用`countLeaves`并累加结果。
4. 如果根节点是叶子节点(即`root->left == nullptr && root->right == nullptr`),则返回1,因为它是一个叶子节点,并增加总叶节点数。
```cpp
int countLeaves(TreeNode* root) {
if (!root) return 0;
if (!root->left && !root->right) return 1; // 叶子节点
else return countLeaves(root->left) + countLeaves(root->right); // 非叶子节点,递归处理
}
```
阅读全文