Professional Documents
Culture Documents
DS C4 Tree
DS C4 Tree
Cây (Tree) là một cấu trúc dữ liệu giống như danh sách liên
kết nhưng khác ở chỗ mỗi node trên cây trỏ đến nhiều node
khác
Cây là cấu trúc dữ liệu không tuyến tính
Một số khái niệm cơ bản 3
Root (gốc) của cây là node không có node cha, mỗi cây chỉ có
duy nhất 1 root.
Edge (cạnh) là đường nối từ node cha đến node con
Leaf (lá) là các node không có node con
Siblings (các node anh em) cùng là con của một node cha
Ancestor (node trước) nút p gọi là nút trước của nút q nếu tồn
tại một đường dẫn (path) từ root đến q và đi qua p
Tập hợp tất cả các node tại một độ sâu nhất định gọi là bậc
(level) của cây. Nút gốc có bậc là 0.
Một số khái niệm cơ bản 4
Depth (độ sâu của một node) là độ dài của đường dẫn từ nút
gốc đến node đó
Chiều cao (height) của một node là độ dài của đường dẫn từ
nút đó đến nút sâu nhất
Chiều cao (height) của một cây là độ dài của đường dẫn từ
nút gốc đến nút sâu nhất
Độ lớn (size) của một node là số node tính từ node đó đến
các node sau nó
Cây nhị phân 5
Một cây được gọi là cây nhị phân nếu mỗi node của cây có: 0
hoặc 1 hoặc 2 node con
Các loại cây nhị phân 6
Strict Binary Tree: là cây nhị phân mà mỗi node trên cây có
chính xác 2 node con hoặc không có node con nào
Các loại cây nhị phân 7
Full Binary Tree (cây nhị phân đầy đủ): là cây nhị phân mà
mỗi node trên cây có chính xác 2 node con và tất cả các node
lá (leaf) có cùng bậc (level)
Các loại cây nhị phân 8
Complete Binary Tree (cây nhị phân hoàn chỉnh): là cây nhị
phân mà tất cả các level (bậc) của nó đều được lấp đầy hoàn
toàn bởi các nodes, nhưng có thể ngoại trừ level cuối cùng và
level cuối cùng có tất cả các nodes càng nằm ở bên trái càng
tốt
Các thuộc tính của Binary Tree 9
Số node của một cây nhị phân đầy đủ: n = 2h+1 – 1
Số node của một cây nhị phân hoàn chỉnh: 2h < n < 2h+1 – 1
Số node lá của một cây nhị phân đầy đủ: 2h
Cây nhị phân | Binary Tree 10
Cây nhị phân tìm kiếm (BST) là cây nhị phân mà thỏa tính
chất sau: Tất cả các phần tử cây con trái (left subtree) có giá
trị nhỏ hơn node gốc và nhỏ hơn tất cả các phần tử cây con
phải (right subtree). Nghĩa là:
Giá trị của các node ở cây con trái phải nhỏ hơn giá trị của node
gốc
Giá trị của các node ở cây con phải phải lớn hơn giá trị của node
gốc
Cây con trái và cây con phải đều phải là cây nhị phân tìm kiếm
Cây nhị phân tìm kiếm | Binary Search Tree 22
Bài tập: Vẽ cây nhị phân tìm kiếm theo thứ tự nhập từ trái
sang phải và duyệt cây theo thứ tự trước?
a) 27; 19; 10; 21; 35; 25; 41; 12; 46; 7
b) H (72); B (66); C (67); A (65) ; E (69); D (68); Z (90); M (77);
P (80); T (84)
Vẽ hình trên trang draw.io (search google)
Cây nhị phân tìm kiếm | Binary Search Tree 24
Thêm một phần tử vào cây BST: Đầu tiên, ta phải tìm vị trí để
thêm phần tử, trong quá trình tìm vị trí nếu đã có phần tử có
cùng giá trị ở vị trí đó rồi thì bỏ qua, nếu không thì thêm phần
tử đó vào
Cây nhị phân tìm kiếm | Binary Search Tree 32
Xóa một phần tử trên cây BST: Xóa một phần tử trên cây BST:
Đầu tiên, ta phải tìm vị trí phần tử muốn xóa. Khi tìm thấy thì:
Nếu node xóa là node lá (leaf): Cập nhật NULL cho node cha
Nếu node xóa là node con (child): Gán node con của node hiện tại
cho node cha
Nếu node xóa có 2 node con: thay thế giá trị của node cần xóa với
phần tử lớn nhất của cây con trái và đệ qui để xóa node đó
Cây nhị phân tìm kiếm | Binary Search Tree 34
LestMostChild:
37