编写函数,计算一棵给定二叉树的所有结点个数c++
时间: 2024-03-11 20:47:55 浏览: 19
好的,以下是计算一棵给定二叉树的所有结点个数的 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(表示当前结点)加上左子树的结点个数和右子树的结点个数。
二叉树双分支结点个数
二叉树的双分支结点个数是指具有左右孩子的结点个数。根据给出的算法思想,可以通过递归的方式来计算二叉树的双分支结点个数。算法的实现如下:
```c++
typedef struct BiTree{
char data;
BiTree *lchild;
BiTree *rchild;
}BiTree;
int DsonNodes(BiTree *T){
if(!T){
return 0;
}
if(T->rchild!=NULL && T->lchild!=NULL){ //若结点的左右孩子存在
return 1 + DsonNodes(T->rchild) + DsonNodes(T->lchild);
}
else{
return DsonNodes(T->rchild) + DsonNodes(T->lchild);
}
}
```
通过给定的测试数据,我们可以调用该函数来计算二叉树的双分支结点个数。例如:
```c++
char pre[13]={'#','A','B','D','F','H','J','M','N','C','E','K','G'};
char in[13]={'#','D','B','J','H','M','N','F','A','E','K','C','G'};
cout<<"The number of double-branch nodes is: "<<DsonNodes(PreInCreate(pre,in,1,12,1,12))<<endl;
```
这将输出二叉树的双分支结点个数。