我想在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