c++求二叉树非叶节点的个数
时间: 2024-12-13 11:17:49 浏览: 10
在C++中,计算二叉树非叶节点的数量通常涉及到对每个节点进行遍历并检查它是否有左右子节点。非叶节点是指那些至少有一个子节点的节点,即不是叶子节点(没有子节点的节点)。一种常见的方法是使用递归,从根节点开始:
```cpp
#include <iostream>
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
int countNonLeafNodes(TreeNode* root) {
if (root == nullptr) return 0; // 如果根为空,返回0
else if (root->left == nullptr && root->right == nullptr) return 1; // 叶子节点计数加一
else return 1 + countNonLeafNodes(root->left) + countNonLeafNodes(root->right); // 非叶子节点递归计数
}
int main() {
// 创建一个示例二叉树...
// 调用countNonLeafNodes函数并打印结果
int result = countNonLeafNodes(yourTreeRoot);
std::cout << "非叶节点个数: " << result << std::endl;
return 0;
}
```
在这个例子中,`countNonLeafNodes` 函数会返回给定二叉树中非叶节点的数量。如果树结构发生变化或者需要频繁计算,将该函数封装到一个单独的类或者模板函数中可以提高复用性和模块化。
阅读全文