设计算法按中序输出二叉树中度为2的结点并 使用全局变量n统计度为2的结点个数。 void NodeCount(BiTree *T)
时间: 2024-02-01 15:15:34 浏览: 79
以下是按中序输出二叉树中度为2的结点并统计个数的算法:
```
int n = 0; // 全局变量n用于统计度为2的结点个数
void NodeCount(BiTree *T) {
if (T == NULL) {
return;
}
NodeCount(T->lchild);
if (T->lchild != NULL && T->rchild != NULL) { // 如果左右子树都存在,则说明该结点度为2
printf("%d ", T->data);
n++;
}
NodeCount(T->rchild);
}
```
算法思路:
1. 如果当前结点为空,则直接返回。
2. 向左子树递归。
3. 如果当前结点的左右子树均存在,则说明该结点度为2,输出该结点的值并将全局变量n加1。
4. 向右子树递归。
这样就能按中序输出二叉树中度为2的结点并统计个数了。
相关问题
设计算法按中序输出二叉树中度为2的结点并使用全局变量n统计度为2的结点个数。 void NodeCount(BiTree *T)
以下是按中序遍历输出二叉树中度为2的节点并统计个数的算法:
```
int n = 0; // 全局变量,记录度为2的结点个数
void NodeCount(BiTree *T) {
if (T == NULL) {
return;
}
NodeCount(T->lchild);
if (T->lchild != NULL && T->rchild != NULL) {
printf("%d ", T->data); // 输出度为2的结点
n++; // 统计度为2的结点个数
}
NodeCount(T->rchild);
}
```
在函数中,首先判断当前节点是否为空,若为空则直接返回。然后递归遍历左子树,遍历完后判断当前节点的度是否为2,若为2则输出节点值并统计个数。最后递归遍历右子树。需要注意的是,全局变量`n`需要在函数外先进行初始化为0。
设计算法按先序次序打印统计二叉树T中度为2的结点的个数(用全局变量的方法) void NodeCount(BiTree *T)
以下是按照先序遍历的方式打印并统计二叉树T中度为2的节点个数的算法实现,使用了全局变量count记录度为2的节点个数:
```c
int count = 0; // 全局变量
void NodeCount(BiTree *T) {
if (T == NULL) return;
if (T->lchild != NULL && T->rchild != NULL) { // 当前节点的度为2
printf("%c ", T->data);
count++;
}
NodeCount(T->lchild); // 递归处理左子树
NodeCount(T->rchild); // 递归处理右子树
}
```
其中,BiTree是二叉树结构体类型,包含数据data和左右孩子指针lchild和rchild。
此算法的时间复杂度为O(n),其中n为二叉树中节点的个数。
阅读全文