Khái niệm Gốc của mỗi cây con được gọi là con của r, và r được gọi là cha của các nút gốc của cáccây con.. Khái niệm Nút láleaf là nút không có con, ví dụ : P,Q Các nút có cùng nút c
Trang 1CẤU TRÚC DỮ LIỆU
CẤU TRÚC DỮ LIỆU
VÀ GIẢI THUẬT
Lý thuyết
Trang 3 Bao gồm 1 nút đặc biệt được gọi là gốc r
Bao gồm 1 nút đặc biệt, được gọi là gốc r
Một tập rỗng hoặc khác rỗng các cây con T1,
T2 Tk mà có gốc được nối trực tiếp với gốc r
T2,…,Tk mà có gốc được nối trực tiếp với gốc r.
Trang 4Khái niệm
Gốc của mỗi cây con được gọi là con của r,
và r được gọi là cha của các nút gốc của cáccây con
Cây tổng quát
Trang 5Khái niệm
Mỗi nút, loại trừ nút gốc đều chỉ có 1 nút
cha
Cây y
Trang 6Khái niệm
Nút lá(leaf) là nút không có con, ví dụ : P,Q
Các nút có cùng nút cha được gọi là các nút
Các nút có cùng nút cha được gọi là các nútanh-chị-em (sibling), ví dụ : K,L,M
Trang 7Khái niệm
Một đường đi từ nút n 1 đến n k được định
nghĩa là một chuỗi các nút n 1 , n 2 , n 3 , ,n k
nghĩa là một chuỗi các nút n 1 , n 2 , n 3 , ,n k trong đó nút n i là cha của nút n i+1 với 1≤i<k
Chiều dài của đường đi là số lượng cạnh
Chiều dài của đường đi là số lượng cạnh
trên đó, đường đi từ n 1 đến n k có chiều dài
là k-1
Trên một cây chỉ có một đường đi duy nhất
từ ố đế ỗi út ò l i
từ gốc đến mỗi nút còn lại
Trang 8Khái niệm
Chiều sâu của nút là chiều dài đường đi từ
nút gốc đến nó
Chiều sâu của nút gốc là 0
Chiều cao của một nút n i là chiều dài
đường đi dài nhất từ n i đến một nút lá
Do đó tất cả các nút lá có chiều cao bằng 0
Chiều cao của cây là chiều cao của nút gốcy g
Trang 9Khái niệm
Ví dụ
Nút E có chiều sâu 1 và chiều cao 2
Chiều cao của cây là 3
Chiều sâu của cây là độ sâu nhất của nút lá
Chiều sâu của cây là độ sâu nhất của nút lá
Chiều sâu của cây bằng chiều cao của cây
Trang 10phải mô tả nextSibling
Các liên kết rỗng (null)
không được vẽ vì số lượng của chúng rất nhiều
Trang 11Duyệt cây
Ví dụ về duyệt cây thư mục
Dấu * bên cạnh tên chỉ ra rằng đó là thư mục
Dấu bên cạnh tên chỉ ra rằng đó là thư mục
Trang 12Duyệt cây
Giả sử chúng ta muốn đưa ra danh sách têncủa tất cả các file trong một thư mục
Cách đưa ra của chúng ta là với các file nằm
ở độ sâu thì khi đưa ra ta sẽ đưa ra tên của
file đó dịch vào khoảng trống (tab)
Trang 15Cây nhị phân
Cây nhị phân là cây mà mỗi nút có không
quá 2 con hai cây con này có thể rỗng
Trang 16Cài đặt cây nhị phân
struct BinaryNode
{
Object element; // The data in the
node
BinaryNode * right; // Right child
};
Cấu trúc 1 nút trên cây nhị phân
Trang 17Cây nhị phân biểu thức
Nút lá của cây là các toán hạng, như là
hằng số hoặc các biến
Các nút khác là các toán tử
Trang 18Duyệt cây nhị phân biểu thức
Duyệt theo thứ tự trước : toán tử, con trái,
con phải Ví dụ : ++a*bc*+*defg
Duyệt theo thứ tự giữa : con trái, toán tử,
Trang 19Xây dựng
cây nhị phân biểu thức
Thuật toán chuyển đổi thành cây biểu thức
tạo hai nút và đNy con trỏ
của hai nút này vào ngăn xếp
của hai nút này vào ngăn xếp
Trang 20Xây dựng
cây nhị phân biểu thức
Tiếp đến chúng ta đọc được một toán tử, vìthế hai con trỏ trong ngăn xếp được lấy ra
thế hai con trỏ trong ngăn xếp được lấy ra, một cây mới được tạo và con trỏ tới nó
được đNy vào ngăn xếp
Trang 21Xây dựng
cây nhị phân biểu thức
Tiếp theo c d e được đọc và ứng với mỗi
toán hạng ta tạo mội nút cây và đNy con trỏtương ứng của nó vào ngăn xếp
Trang 22Xây dựng
cây nhị phân biểu thức
Tiếp theo dấu + được đọc, vì thế hai cây
được kết hợp
Trang 23Xây dựng
cây nhị phân biểu thức
Tiếp theo * được đọc, ta lấy ra hai con trỏ
của hai cây trong ngăn xếp và tạo một cây
mới với * là gốc
Trang 24Xây dựng
cây nhị phân biểu thức
Cuối cùng, ký hiệu cuối cùng được đọc, hai cây được kết hợp và một con trỏ tới cây kếtquả còn lại trong ngăn xếp