c++计算一棵给定二叉树的所有结点个数
时间: 2024-01-28 13:05:32 浏览: 83
好的,以下是计算一棵给定二叉树的所有结点个数的 C++ 代码:
```cpp
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
int countNodes(TreeNode* root) {
if (!root) {
return 0;
}
return 1 + countNodes(root->left) + countNodes(root->right);
}
```
其中,`TreeNode` 是二叉树的结点类,包括 `val` 表示结点值,`left` 表示左子树,`right` 表示右子树。
函数 `countNodes` 是计算二叉树结点个数的函数,采用递归的方式实现。如果当前结点为空,返回 0。否则,返回 1(表示当前结点)加上左子树的结点个数和右子树的结点个数。
相关问题
编写函数,计算一棵给定二叉树的所有结点个数c++
好的,以下是计算一棵给定二叉树的所有结点个数的 C++ 代码:
```cpp
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
int countNodes(TreeNode* root) {
if (!root) {
return 0;
}
return 1 + countNodes(root->left) + countNodes(root->right);
}
```
其中,`TreeNode` 是二叉树的结点类,包括 `val` 表示结点值,`left` 表示左子树,`right` 表示右子树。
函数 `countNodes` 是计算二叉树结点个数的函数,采用递归的方式实现。如果当前结点为空,返回 0。否则,返回 1(表示当前结点)加上左子树的结点个数和右子树的结点个数。
假设二叉树中每个结点值为单个字符,采用二叉链存储结构存储设计,一个算法计算一棵树给定二叉树BT中的所有单分支结点个数.用c++
好的,下面是该算法的C++代码实现:
```c++
#include <iostream>
using namespace std;
struct TreeNode {
char val;
TreeNode* left;
TreeNode* right;
TreeNode(char x) : val(x), left(nullptr), right(nullptr) {}
};
int countSingleBranchNodes(TreeNode* root) {
if (!root) {
return 0;
}
int count = 0;
if (root->left && !root->right) {
count += 1;
} else if (root->right && !root->left) {
count += 1;
}
count += countSingleBranchNodes(root->left) + countSingleBranchNodes(root->right);
return count;
}
int main() {
// 构造一棵二叉树
TreeNode* root = new TreeNode('A');
root->left = new TreeNode('B');
root->right = new TreeNode('C');
root->left->left = new TreeNode('D');
root->left->right = new TreeNode('E');
root->right->left = new TreeNode('F');
root->right->right = new TreeNode('G');
root->left->left->left = new TreeNode('H');
root->left->left->right = new TreeNode('I');
root->left->right->left = new TreeNode('J');
root->right->right->left = new TreeNode('K');
root->right->right->right = new TreeNode('L');
int count = countSingleBranchNodes(root);
cout << "单分支结点的个数为:" << count << endl;
return 0;
}
```
这个算法的时间复杂度是O(n),其中n是二叉树中节点的数量。
阅读全文