Data structures 用于删除二叉树中不工作的节点的代码

Data structures 用于删除二叉树中不工作的节点的代码,data-structures,binary-tree,Data Structures,Binary Tree,我编写了这段代码来删除二叉树中的一个节点,并将其替换为最右边最深的节点。 但删除后是行为不端。请在我的代码中提出问题。提前感谢你 我正在创建一个队列以查找最深的节点。 Delete关键字用于删除 最后一行“打印”未正确执行。 ** #包括 使用名称空间std; 结构节点{ int数据; 结构节点*左; 结构节点*右; 节点(int-val){ 数据=val; 左=空; 右=空; } }; void printbst(节点*根){ if(root==NULL) 返回; printbst(根->左)

我编写了这段代码来删除二叉树中的一个节点,并将其替换为最右边最深的节点。 但删除后是行为不端。请在我的代码中提出问题。提前感谢你

我正在创建一个队列以查找最深的节点。 Delete关键字用于删除

最后一行“打印”未正确执行。 **

#包括
使用名称空间std;
结构节点{
int数据;
结构节点*左;
结构节点*右;
节点(int-val){
数据=val;
左=空;
右=空;
}
};
void printbst(节点*根){
if(root==NULL)
返回;
printbst(根->左);
coutright==NULL)
{
如果(根->数据==键)
返回NULL;
其他的
返回根;
}
而(!q.empty()){
温度=q.前();
q、 pop();
如果(临时->数据==键)
keynode=temp;
如果(临时->左){
q、 按下(温度->左);
}
如果(临时->右侧){
q、 按下(温度->右侧);
}
}
键节点->数据=临时->数据;
删除(临时);
返回根;
}
int main(){
结构节点*根=新节点(1);
根->左=新节点(2);
根->右=新节点(3);
根->左->左=新节点(4);
根->左->右=新节点(5);
根->右->左=新节点(6);
根->右->右=新节点(7);
printbst(root);
库特
#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;
}