Mong bạn like hoặc +1 để giúp đỡ blog có thể duy trì hoạt động lâu dài#include <stdio.h>
#include <conio.h>
#include <malloc.h>
#include <string.h>
typedef struct NhanVien{
int ID;
char *ChucVu;
};
typedef NhanVien KeyType;
typedef struct Node{
NhanVien Key;
Node* Left;
Node* Right;
};
typedef Node* Tree;
void MakeNullTree( Tree &T){
T=NULL;
}
Tree Search(NhanVien X, Tree T){
if(T==NULL) return NULL;
else if(T->Key.ID == X.ID)
return T;
else if (T->Key.ID < X.ID)
return Search(X,T->Right);
else
return Search(X,T->Left);
}
void InsertNode(NhanVien X, Tree &T){
if(T==NULL){
T=(Node*)malloc(sizeof(Node));
T->Key = X;
T->Left=NULL;
T->Right=NULL;
}
else if (T->Key.ID< X.ID)
InsertNode(X,T->Right);
else if (T->Key.ID> X.ID)
InsertNode(X,T->Left);
}
KeyType DeleteMin(Tree &T){
KeyType k;
if (T->Left==NULL){
k = T->Key;
T=T->Right;
return k;
}
else DeleteMin(T->Left);
}
void DeleteNode(NhanVien X, Tree &T){
if (T!=NULL)
if (T->Key.ID < X.ID)
DeleteNode(X,T->Right);
else if (T->Key.ID > X.ID)
DeleteNode(X,T->Left);
else if (T->Left==NULL && T->Right == NULL)
T=NULL;
else if (T->Left==NULL)
T=T->Right;
else if (T->Right==NULL)
T=T->Left;
else
T->Key = DeleteMin(T->Right);
}
void InOrder(Tree T){
if(T!=NULL){
InOrder(T->Left);
printf("(%d,%s) ; ",T->Key.ID,T->Key.ChucVu);
InOrder(T->Right);
}
}
int main(){
Tree T;
MakeNullTree(T);
InsertNode((NhanVien){10,"GD"},T);
InsertNode((NhanVien){8,"TP"},T);
InsertNode((NhanVien){6,"NV"},T);
InsertNode((NhanVien){11,"PGD"},T);
InOrder(T);
return 0;
}
0 nhận xét:
Đăng nhận xét