【发布时间】:2014-02-26 13:16:28
【问题描述】:
我正在尝试使用指针在 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 导致应用程序崩溃。
标签: c++ algorithm pointers data-structures tree