Tải bản đầy đủ (.ppt) (18 trang)

Cây nhị phân docx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (647.94 KB, 18 trang )

CÂY NHỊ PHÂN
TMT
1
CÁC KHÁI NI MỆ
1. C u trúc cây nh phânấ ị
2. Các lo i cây nh phânạ ị
a/ Cây nh phân đúngị (Strictly Binary
Tree): T t c các nút đ u có đúng hai con ấ ả ề
(ngo i tr nút lá). ạ ừ
2
B
A
C
X F
H I
D E
G
Y
B
A
C
X F
H I
D E
G
Y
CÁC KHÁI NI MỆ

b/ Cây nh phân đ yị ầ (Complete Binary
Tree): là cây nh phân đúng và t t c các ị ấ ả
nút lá cùng m c. ở ứ


3
B
A
C
F
G
N O
D
E
J
K
L
M
H I
B
A
C
F
G
N O
D
E
J
K
L
M
H I
Đ C ĐI M CÂ Y NH PHÂN TÌM KI MẶ Ể Ị Ế

Là cây nh phânị


Giá tr c a m t node ị ủ ộ
b t k luôn ấ ỳ l n h n ớ ơ
giá tr c a t t c các ị ủ ấ ả
node bên trái và nh ỏ
h n giá tr t t c các ơ ị ấ ả
node bên ph iả
Nút có giá tr nh ị ỏ
nh t n m trái nh t ấ ằ ở ấ
c a cây ủ
Nút có giá tr l n ị ớ
nh t n m ph i ấ ằ ở ả
nh t c a câyấ ủ
7
7
7
7
3
3
36
36
1
1
6
6
15
15
40
40
23

23
4
4
4

Cây nh phân cân b ngị ằ (AVL): M t cây ộ
nh phân đ c g i là cây nh phân cân b ng ị ượ ọ ị ằ
n u và ch n u đ i v i ế ỉ ế ố ớ m i nút c a cây thì ọ ủ
chi u caoề c a cây con bên trái và chi u ủ ề
cao c a cây con bê n ph i h n kém nhau ủ ả ơ
nhi u nh t là 1ề ấ (Theo Adelson - Velski và
Landis).
5
B
A
C
E
F
I J
D
G H
B
A
C
E
F
I J
D
G H


Cây nh phân cân b ng hoàn toànị ằ : M t ộ
cây nh phân đ c g i là cây nh phân cân ị ượ ọ ị
b ng hoàn toàn ằ n u và ch n u đ i v i ế ỉ ế ố ớ
m i nút c a cây thì ọ ủ s nútố c a cây con ủ
bên trái và s nút c a cây con bên ph i ố ủ ả
h n kém nhau nhi u nh t là 1ơ ề ấ
6
B
A
C
E F
I
E D
H
H
B
A
C
E F
I
E D
H
H
Nút
Đ NH NGHĨA KI U D LI UỊ Ể Ữ Ệ
typedef struct Node
{
<Data> Key;
struct Node *Left, *Right;
} *Tree;

Giá trị
Trỏ trái Trỏ phải
TNODE
Key
pLeft pRight
7
KHAI BÁO CÂY NH Ị
typedef struct Node
{
int Key;
struct Node *Left, *Right;
} *Tree;
8
XÂY D NG CÂY Ự
Ví dụ: có dãy s 20, 70, 30, 25, 35, 50, 80, 40, ố
60, 10
(3 tr ng h p g c là 50, g c là, 10 hay g c là ườ ợ ố ố ố
80)
9
Ví dụ: có dãy s 20, 70, 30, 25, 35, 50, 80, 40, ố
60, 10
10
Ví dụ: có dãy s 20, 70, 30, 25, 35, 50, 80, 40, ố
60, 10
11
DUY T CÂYỆ
Th t tr c ứ ự ướ (NLR)
Th t gi a ứ ự ữ (LNR)
Th t sau ứ ự (LRN)
……

12
NLR
7 L7 R7
7 3 L3 R3 36 L36 R36
7 3 1 6 L6 36 15 R15 40
7 3 1 6 4 36 15 23 40
7
7
7
7
3
3
36
36
1
1
6
6
15
15
40
40
23
23
4
4
13
NLR
T i node t đang xét, n u ạ ế
khác r ng thìỗ

. In giá tr c a tị ủ
. Duy t cây con bên trái ệ
c a t theo th t NLRủ ứ ự
. Duy t cây con bên ệ
ph i c a t theo th t ả ủ ứ ự
NLR
void NLR (TREE t)
void NLR (TREE t)
{
{
if(t!=NULL)
if(t!=NULL)
{
{
cout<<t->Key<<“\t”;
cout<<t->Key<<“\t”;
NLR(t->pLeft);
NLR(t->pLeft);
NLR(t->pRight);
NLR(t->pRight);
}
}
}
}
14
LNR
L7 7 R7
L3 3 R3 7 L36 36 R36
1 3 L6 6 7 15 R15 36 40
1 3 4 6 7 15 23 36 40

7
7
7
7
3
3
36
36
1
1
6
6
15
15
40
40
23
23
4
4
15
LNR
T i node t đang xét, n u ạ ế
khác r ng thìỗ
. Duy t cây con bên trái ệ
c a t theo th t LNRủ ứ ự
. In giá tr c a tị ủ
. Duy t cây con bên ph i ệ ả
c a t theo th t LNR ủ ứ ự


void LNR (TREE t)
{
if(t!=NULL)
{
LNR(t->pLeft);
cout<<t->Key<<“ “;
LNR(t->pRight);
}
}
16
LRN
L7 R7 7
L3 R3 3 L36 R36 36 7
1 L6 6 3 R15 15 40 36 7
1 4 6 3 23 15 40 36 7
7
7
7
7
3
3
36
36
1
1
6
6
15
15
40

40
23
23
4
4
17
LRN
T i node t đang xét, n u ạ ế
khác r ng thìỗ
. Duy t cây con bên trái ệ
c a t theo th t LRNủ ứ ự
. Duy t cây con bên ph i ệ ả
c a t theo th t LRN ủ ứ ự
. In giá tr c a t ị ủ
void LRN (TREE t)
{
if(t!=NULL)
{
LRN(t->pLeft);
LRN(t->pRight);
cout<<t->Key<<“ “;
}
}
18

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×