输入过程中会卡住无法继续输入
源代码如下
#include
#include
using namespace std;
struct Tnode //创建二叉树类型
{
string word;
int count;//重复出现的单词次数
Tnode left;
Tnode *right;
};
struct Tree{
Tnode root;
};
void insert(Tree*,string);
void inorder(Tnode*);
void preorder(Tnode*);
int main()
{
Tree tree;
tree.root = nullptr;
string word;
while(1)
{
cin >> word;
insert(&tree,word);
if(!cin)
break;
}
preorder(tree.root);
inorder(tree.root);
return 0;
}
void insert(Tree* tree,string word)//插入操作
{
Tnode *s;
s = new Tnode;
s->word = word;
s->left = nullptr;
s->right = nullptr;
if(tree->root == nullptr)//判断是否为空树
tree->root = s;
else {
Tnode* temp = tree->root;
while(temp != nullptr){
if(word < temp->word){
if(temp->left == nullptr){
temp->left = s;
return;
}
else{
temp = temp->left;
}
}
else if(word > temp->word){
if(temp->right == nullptr){
temp->right = s;
return;
}
else{
temp = temp->right;
}
}
else{
temp = s;
s->count++;
}
}
}
}
void preorder(Tnode* node)//先序遍历
{
cout << "先序遍历:" << endl;
if(node != nullptr)
{
cout << node->word << " " << node->count << " ";
preorder(node->left);
preorder(node->right);
}
}
void inorder(Tnode* node)//中序遍历
{
cout << "中序遍历:" << endl;
if (node != nullptr)
{
inorder(node->left);
cout << node->word << " " << node->count << " ";
inorder(node->right);
}
}
希望大佬帮我看看是哪里的问题
left前面是不是少了指针