输出二叉树叶子节点和结点个数
时间: 2024-11-22 20:28:11 浏览: 28
在C++中,要输出二叉树的叶子节点(即只有左孩子或右孩子的节点)以及总节点个数,可以创建一个辅助函数来检查每个节点是否为叶子节点,同时统计节点总数。以下是一个基本的示例:
首先,我们需要定义一个二叉树节点的结构体:
```cpp
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
```
然后,可以编写一个函数来递归地查找叶子节点并计数:
```cpp
void countLeavesAndNodes(TreeNode* node, int& leafCount, int& totalCount) {
if (node == nullptr) return;
++totalCount; // 统计总节点数
if (node->left == nullptr && node->right == nullptr) { // 如果是叶子节点
++leafCount; // 增加叶子节点数
}
// 递归遍历左、右子树
countLeavesAndNodes(node->left, leafCount, totalCount);
countLeavesAndNodes(node->right, leafCount, totalCount);
}
// 主函数调用
int main() {
TreeNode* root = ... // 初始化你的二叉树根节点
int leafCount = 0, totalCount = 0;
countLeavesAndNodes(root, leafCount, totalCount);
cout << "Leaf nodes: " << leafCount << ", Total nodes: " << totalCount << endl;
return 0;
}
```
在这个例子中,`countLeavesAndNodes`函数会递归遍历整棵树,同时更新`leafCount`和`totalCount`。最后,在`main`函数中,输出这两个值即可。
阅读全文