有没有大佬能告诉我,为什么下面代码中两个insert函数的区别(被注释了的是错误的),为什么会出错啊。
#include<iostream>
#include<stdlib.h>
using namespace std;
struct Node{
int value;
Node*left;
Node*right;
Node(int v,Node* l,Node* r){
value=v;
left=l;
right=r;
}
Node(){
value=0;
left=NULL;
right=NULL;
}
};
//void insert(Node*root,int value){
// if(root==NULL){
// root = new Node(value,NULL,NULL);
// return;
// }
// if(value<root->value){
// insert(root->left,value);
// }
// if(value>root->value){
// insert(root->right,value);
// }
//}
void insert(Node*root,int value){
if(value<root->value){
if(root->left==NULL){
root->left = new Node(value,NULL,NULL);
}else{
insert(root->left,value);
}
}
if(value>root->value){
if(root->right==NULL){
root->right = new Node(value,NULL,NULL);
}else{
insert(root->right,value);
}
}
}
void pre(Node*root){
cout<<root->value<<" ";
if(root->left){
pre(root->left);
}
if(root->right){
pre(root->right);
}
}
void bew(Node* root){
if(root->left){
bew(root->left);
}
cout<<root->value<<" ";
if(root->right){
bew(root->right);
}
}
void lat(Node* root){
if(root->left){
lat(root->left);
}
if(root->right){
lat(root->right);
}
cout<<root->value<<" ";
}
int main(){
int n,i,j,value;
while(cin>>n){
Node* root = new Node();
cin>>value;
root->value=value;
root->left=NULL;
root->right=NULL;
for(i=1;i<n;i++){
cin>>value;
insert(root,value);
}
pre(root);
cout<<"\n";
bew(root);
cout<<"\n";
lat(root);
cout<<"\n";
}
return 0;
}