1. 1. a. Khái niệm và định nghĩa
Cây là một cấu trúc dữ liệu được dùng để mô hình hóa một tổ chức có cấp bậc. Những đặc tính điển hình là mỗi phần tử có thể có nhiều phần tử kế nghiệp (có thể gọi là con cháu − hậu bối – children, descendent), ngoại trừ một phần tử được gọi là đỉnh gốc (root), mỗi phần tử khác gốc có một bề trên kế tiếp duy nhất (được gọi là đỉnh cha của nó – parent). Cây được sử dụng rất rộng rãi trong lĩnh vực máy tính: các hệ thống tập tin máy tính là các cây, cấu trúc kế thừa của các lớp trong một ngôn ngữ lập trình hướng đối tượng (C++, Java, C#, …) là một cây, hệ thống thời gian chạy (run–time) của những việc gọi phương thức trong suốt quá trình thực thi của một chương trình được viết theo lập trình hướng đối tượng là một cây, … Nhà toán học người Anh tên là Arthur Cayley giới thiệu rất sớm khái niệm về cây (năm 1857), từ đó cấu trúc cây được dùng rất nhiều trong các thuật toán. Trong chương này ta sẽ nhìn cây như một dạng đồ thị đặc biệt.
Định nghĩa 6.1
Một đồ thị vô hướng liên thông và không chứa chu trình đơn được gọi là một cây. Nếu cây xuất phát từ đồ thị có trọng số thì cây được gọi là cây có trọng số.
Một đồ thị vô hướng không chứa chu trình đơn và không liên thông được gọi là một rừng. Một rừng chứa nhiều cây, mỗi cây là một thành phần liên thông của đồ thị.
Định lý 6.1
Một đồ thị vô hướng là một cây khi và chỉ khi giữa hai đỉnh bất kỳ của đồ thị luôn tồn tại duy nhất một đường nối
Định nghĩa 6.2
Cây xác định gốc là một cây có một đinh được chọn làm gốc và các cạnh được định hướng
đi xa ra từ gốc. Có thể nói gọn là cây có gốc.
Với cây xác định gốc, ta chú ý một số thuât ngữ sau:
Với đỉnh v bất kỳ khác gốc, đỉnh u có cạnh nối từ u đến v được gọi là đỉnh cha
(parent) của đỉnh v và v được gọi là đỉnh con (child) của đỉnh v. Các đỉnh có cùng đỉnh cha được gọi là các đỉnh anh em (sibling).
Do tính chất của cây xác định gốc, đỉnh cha tồn tại duy nhất. Đỉnh không có đỉnh con được gọi là đỉnh lá (leaf).
Đỉnh có đỉnh con được gọi là đỉnh trong (internal vertex).
Đỉnh bề trên (tổ tiên, tiền bối – ancestor) của đỉnh v là đỉnh khác với gốc và v mà nằm trên đường nối từ gốc đến đinh v.
Đỉnh hậu duệ (con cháu, hậu bối – descendent) của đỉnh v là đỉnh có đỉnh v là đỉnh bề trên.
Cây con (subtree) gốc v là đồ thị con chứa v và tất cả các đỉnh hậu duệ của v.
Mức của đỉnh v là chiều dài của đường dẫn duy nhất từ gốc đến đỉnh v. Dễ thấy mức của đỉnh gốc là 0.
Chiều cao của cây là mức lớn nhất của các đỉnh trong cây hay nói khác đi chiều cao
của cây là chiều dài của đường dẫn dài nhất từ gốc đến đỉnh của cây.
Mệnh đề 6.1
Cho T là một đồ thị vô hướng với n đỉnh. Các kết quả sau tương đương nhau: a) T là cây.
b) T không có chu trình và có đúng n–1 cạnh. c) T liên thông và có đúng n–1 cạnh.
d) Với hai đỉnh bất kỳ cua T luôn tồn tại duy nhất một đường đi nối chúng.
e) T không chứa chu trình và nếu thêm một cạnh nối 2 đỉnh bất kỳ thì T chứa một chu trình duy nhất.