C++ 二叉树的创建问题
代码如下:
#include <iostream>
using namespace std;
struct node
{
int data;
node *left;
node *right;
};
node *CreateNode()
{
cout<<"elements:-1"<<endl;
int temp;
cin>>temp;
if(temp!=-1)
{
node *tempNode=new node();
if(NULL==tempNode)
{
cout<<"error to create new node"<<endl;
return NULL;
}
tempNode->data=temp;
tempNode->left=CreateNode();
tempNode->right=CreateNode();
}
else
{
return NULL;
}
}
void PreTravel(node *root)
{
if(root)
{
cout<<root->data<<" ";
PreTravel(root->left);
PreTravel(root->right);
}
}
int main(void)
{
node *root=CreateNode();
PreTravel(root);
system("pause");
return 0;
}
运行后main函数中的root始终无法得到数据,这是怎么回事?求解释
[解决办法]
if(temp!=-1)
{
node *tempNode=new node();
if(NULL==tempNode)
{
cout<<"error to create new node"<<endl;
return NULL;
}
tempNode->data=temp;
tempNode->left=CreateNode();
tempNode->right=CreateNode();
return tempNode;
}
else
{
return NULL;
}