#include<iostream> using namespace std; typedef struct BiNode { char data; struct BiNode* lchild, * rchild; }; BiTNode, *BiTree; void CreateBiTree(BiTree &T) { char ch; cin >> ch; if (ch == '#') T = NULL; else { T = new BiTree; T->data = ch; CreateBiTree(T->lchild); CreateBiTree(T->rchild); } } int NodeCount(BiTree T) { if (T == NULL) return 0; else return NodeCound(T->lchild) + NodeCound(T->rchild) + 1; } void main() { BiTree tree; cout << "请输入建立二叉链表的序列:\n"; CreateBiTree(tree); cout << "结点个数为:" << NodeCount(tree) << end1; }
时间: 2024-01-23 11:03:34 浏览: 73
这段代码是一个求二叉树结点个数的程序,但是代码中存在一些错误。我来帮你看看并修改一下:
```c++
#include<iostream>
using namespace std;
typedef struct BiNode {
char data;
struct BiNode* lchild, * rchild;
} BiNode, * BiTree;
void CreateBiTree(BiTree& T) {
char ch;
cin >> ch;
if (ch == '#') {
T = NULL;
}
else {
T = new BiNode;
T->data = ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
}
int NodeCount(BiTree T) {
if (T == NULL) {
return 0;
}
else {
// 注意这里是 NodeCount 而不是 NodeCound
return NodeCount(T->lchild) + NodeCount(T->rchild) + 1;
}
}
int main() {
BiTree tree;
cout << "请输入建立二叉链表的序列:\n";
CreateBiTree(tree);
cout << "结点个数为:" << NodeCount(tree) << endl; // 注意 end1 应该是 endl
return 0;
}
```
你可以尝试输入类似于 `AB##C##` 的序列创建二叉树并计算结点个数。
阅读全文