포인터를 사용하여 C++에서 간단한 이진 트리를 구현하려고합니다.트리에서 노드를 삭제하는 방법은 무엇입니까?
나는 성공적으로 삽입 및 이송을 구현 한,하지만 난 노드 삭제하려고 할 때 몇 가지 문제가 있습니다 :
내 주요 기능은 다음과 같습니다
main(){
node* root=createNode(1);
root->left=createNode(2);
root->right=createNode(3);
root->left->left=createNode(4);
root->left->right=createNode(5);
root->right->left=createNode(6);
root->right->right=createNode(7);
inorder(root);
//till here it works fine
delete root->left->left; //problem starts here
cout<<"\n";
inorder(root); //exception is thrown here...
return 0;
} `
을 중위 함수는 매우 기본적인 재귀 함수입니다 :
void inorder(node* root){
if(root!=NULL){
inorder(root->left);
cout<<root->data<<" ";
inorder(root->right);
}
}
줄 사람이 무엇이 잘못되었는지 말해 줄 수 있습니까?
예외가 발생했습니다. 그게 예외라고 확신합니까? –
'createNode'는'left'와'right' 포인터를'null'으로 설정합니까? –
@JosephMansfield, 나는 그것이 응용 프로그램을 충돌 sigsegv 내기. – maverik