BST 삽입 + 임의의 노드 삭제 귀속 실현
중차순 후계 노드를 찾아 연결을 완성합니다.
#include
#include
#include
#include
#include
#include
using namespace std;
const int maxn = 2e5+32;
#define LL long long
const int inf = 0x3f3f3f3f;
class bst
{
public:
struct node
{
int key;
node *left;
node *right;
node(int k):key(k),left(nullptr),right(nullptr){}
};
node *head=nullptr;
void insert(node *now,int key)
{
if(head==nullptr){
node *temp=new node(key);
head=temp;
return;
}
if(key>now->key){
if(now->right==nullptr){
node *temp=new node(key);
now->right=temp;
return;
}
insert(now->right,key);
}
else if(key==now->key)
return;
else{
if(now->left==nullptr){
node *temp=new node(key);
now->left=temp;
return;
}
insert(now->left,key);
}
}
void midout(node *now)//
{
if(now!=nullptr){
midout(now->left);
printf("%d
",now->key);
midout(now->right);
}
}
node* findmin(node *now)
{
return now->left==nullptr?now:findmin(now->left);
}
node* deletemin(node *now)
{
if(now->left==nullptr){
node *temp=now->right;
delete now;
return temp;
}
now->left=deletemin(now->left);
return now;
}
node* deletekey(node *now,int key)
{
if(now->key==key){
node* temp=findmin(now->right);// temp( )
temp->right=deletemin(now->right);// , , temp right。
temp->left=now->left;// left left
return temp;
}else if(now->keyright=deletekey(now->right,key);
return now;
}else{
now->left=deletekey(now->left,key);
return now;
}
}
};
int main()
{
bst a;
a.insert(a.head,10);
a.insert(a.head,15);
a.insert(a.head,7);
a.insert(a.head,4);
a.insert(a.head,8);
a.midout(a.head);
cout<
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
요구사항 정의요구사항 정의 작성 방법 개요 ・목적 표시되고 있는 텍스트를 가변으로 한다 · 과제 표시된 텍스트가 변경되지 않음 ・해결 표시되고 있는 텍스트가 가변이 된다 사양 · 표시 정의 각 편집 화면 ○○ 표시되고 있는 텍스...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.