Cài đặt cây tìm kiếm nhị phân Nhân viên - Dạng 1

Mong bạn like hoặc +1 để giúp đỡ blog có thể duy trì hoạt động lâu dài

Bài liên quan: Cài đặt và sử dụng Code::Blocks 10.05

#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;
}

Bài liên quan

Bài liên quan