问题描述
我编写了这段代码来删除二叉树中的一个节点并将其替换为最深的最右边的节点。 但是删除后就报错了。请在我的代码中提出问题。感谢您的期待。
我正在创建一个队列来查找最深的节点。 delete关键字用于删除
最后一行“打印”没有被正确执行。 **
#include<bits/stdc++.h>
using namespace std;
struct Node{
int data;
struct Node* left;
struct Node* right;
Node(int val){
data=val;
left=NULL;
right=NULL;
}
};
void printbst(Node *root){
if(root==NULL)
return;
printbst(root->left);
cout<<root->data<<" ";
printbst(root->right);
}
Node* lastnode(Node *root,int key){
queue<Node *>q;
Node *temp;
Node *keynode;
q.push(root);
temp=q.front();
if(temp->left==NULL && temp->right==NULL)
{
if(root->data==key)
return NULL;
else
return root;
}
while(!q.empty()){
temp=q.front();
q.pop();
if(temp->data==key)
keynode=temp;
if(temp->left){
q.push(temp->left);
}
if(temp->right){
q.push(temp->right);
}
}
keynode->data=temp->data;
delete(temp);
return root;
}
int main(){
struct Node* root=new Node(1);
root->left=new Node(2);
root->right=new Node(3);
root->left->left=new Node(4);
root->left->right=new Node(5);
root->right->left=new Node(6);
root->right->right=new Node(7);
printbst(root);
cout<<"\n"<<"printed"<<"\n";
int key=3;
root=lastnode(root,key);
printbst(root);
cout<<"\n"<<"printed"<<"\n";
return 0;
}
**
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)