Cây nh phân hoàn ch nh : là cây nh phân mà các nút các m c tr m c cu i đ u đ t ỉnh : là cây nhị phân mà các nút ở các mức trừ mức cuối đều đạt ở các mức trừ mức cuối đều đạt ức trừ mức
Trang 1
Nguy n Văn Thi n – Lê Anh Vũ – Vũ Văn Tú – Nguy n Hoàng H i Đ Qu c Đ t ện – Lê Anh Vũ – Vũ Văn Tú – Nguyễn Hoàng Hải Đỗ Quốc Đạt ải Đỗ Quốc Đạt ỗ Quốc Đạt ốc Đạt ạt Page 1
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
BÀI TẬP NHÓM MÔN HỌCIT3040 – KỸ THU T L P TRÌNH 2012-2013 ẬT LẬP TRÌNH 2012-2013 ẬT LẬP TRÌNH 2012-2013
Giảng viên hướng dẫn : PGS TS Huỳnh Quyết Thắng
Nhóm học viên : Nguyễn Hoàng Hải
Nguyễn Văn Thiện
Vũ Văn Tú
Lê Anh Vũ
Đỗ Quốc Đạt Lớp: KSTN_CNTT_K56
HÀ NỘI 2013 BÀI T P L N ẬT LẬP TRÌNH 2012-2013 ỚN
Trang 2M C L C ỤC LỤC ỤC LỤC
IT3040 – KỸ THUẬT LẬP TRÌNH 2012-2013 1
Giảng viên hướng dẫn : PGS TS Huỳnh Quyết Thắng 1
I GI I THI U VÀ NG D NG C A CÂY NH PHÂN ỚN ỆU VÀ ỨNG DỤNG CỦA CÂY NHỊ PHÂN ỨNG DỤNG CỦA CÂY NHỊ PHÂN ỤC LỤC ỦA CÂY NHỊ PHÂN Ị PHÂN 3
1 Đ nh nghĩa: ịnh nghĩa: 3
2 Tính ch t ất 4
3 Bi u di n cây nh phân ểu diễn cây nhị phân ễn cây nhị phân ịnh nghĩa: 4
4 Các thao tác trên cây nh phân: ịnh nghĩa: 5
4.1 C u trúc: ất 5
4.2 T o nút: ạo nút: 5
4.3 Tính s nút và chi u sâu c a cây ố nút và chiều sâu của cây ều sâu của cây ủa cây 5
4.4 Duy t cây theo th t tr ệt cây theo thứ tự trước NLR ( ứ tự trước NLR ( ự trước NLR ( ước NLR ( c NLR (preoder Traversal) 6
4.5 Duy t cây theo th t gi a LNR ( ệt cây theo thứ tự trước NLR ( ứ tự trước NLR ( ự trước NLR ( ữa LNR ( inoder Traversal) 6
4.6 Duy t cây theo th t sau LRN ( ệt cây theo thứ tự trước NLR ( ứ tự trước NLR ( ự trước NLR ( postoder Traversal) 6
II Bài toán đ t ra ặt ra 7
1 Gi i thi u: ớc NLR ( ệt cây theo thứ tự trước NLR ( 7
2 Duy t cây theo không dùng đ quy ệt cây theo thứ tự trước NLR ( ệt cây theo thứ tự trước NLR ( 9
2.1 Thuật toán 9
2.1.1 Duyệt theo thứ tự giữa 9
2.1.2 Duyệt theo thứ tự trước 11
2.2 Cài đ t ặt ra 13
2.2.1 Cài đ t file header ặt ra 13
2.2.2 T o cây và thêm nút vào cây ạo nút: 15
2.2.3 T o lu ng ạo nút: ồng 16
2.2.4 Duy t cây nh phân ệt cây theo thứ tự trước NLR ( ịnh nghĩa: 17
2.2.5 In cây nh phân ịnh nghĩa: 18
III TÀI LI U THAM KH O ỆU VÀ ỨNG DỤNG CỦA CÂY NHỊ PHÂN ẢO 24
Trang 3I GI I THI U VÀ NG D NG C A CÂY NH PHÂN ỚN ỆU VÀ ỨNG DỤNG CỦA CÂY NHỊ PHÂN ỨNG DỤNG CỦA CÂY NHỊ PHÂN ỤC LỤC ỦA CÂY NHỊ PHÂN Ị PHÂN
1.1 Cây
Là đ th có h ư ng, lien thông và không có chu trình Cây bao g m các nút, có m t nút đ c ột nút đặc ặc
bi t g i là g c (root) và các c nh n i các nút ệt gọi là gốc (root) và các cạnh nối các nút ọi là gốc (root) và các cạnh nối các nút ốc (root) và các cạnh nối các nút ạnh nối các nút ốc (root) và các cạnh nối các nút.
1.2 Cây nh phân: ịnh nghĩa:
Là cây mà m i nút có nhi u nh t là 2 con (con trái và con ph i) M i nút ho c ều nhất là 2 con (con trái và con phải) Mỗi nút hoặc ất là 2 con (con trái và con phải) Mỗi nút hoặc ải) Mỗi nút hoặc ặc không có con,
ho c ặc ch có con trái, ỉ có con trái, ho c ặc ch có con ph i, ỉ có con trái, ải Đỗ Quốc Đạt ho c ặc có c con trái con ph i ải Đỗ Quốc Đạt ải Đỗ Quốc Đạt
Cây nh phân suy bi n có d ng: ến có dạng: ạnh nối các nút.
Cây nh phân đ y đ : là cây nh phân thõa mãn m i nút lá đ có cùng đ sâu và các ủ: là cây nhị phân thõa mãn mỗi nút lá đề có cùng độ sâu và các ều nhất là 2 con (con trái và con phải) Mỗi nút hoặc ột nút đặc nút có đúng 2 con.
Cây nh phân hoàn ch nh : là cây nh phân mà các nút các m c tr m c cu i đ u đ t ỉnh : là cây nhị phân mà các nút ở các mức trừ mức cuối đều đạt ở các mức trừ mức cuối đều đạt ức trừ mức cuối đều đạt ừ mức cuối đều đạt ức trừ mức cuối đều đạt ốc (root) và các cạnh nối các nút ều nhất là 2 con (con trái và con phải) Mỗi nút hoặc ạnh nối các nút.
t i đa ốc (root) và các cạnh nối các nút.
Nguy n Văn Thi n – Lê Anh Vũ – Vũ Văn Tú – Nguy n Hoàng H i Đ Qu c Đ t ện – Lê Anh Vũ – Vũ Văn Tú – Nguyễn Hoàng Hải Đỗ Quốc Đạt ải Đỗ Quốc Đạt ỗ Quốc Đạt ốc Đạt ạt Page 3
Trang 4Cây hoàn ch nh ỉnh Cây đ y đ ầy đủ ủa cây
S l ốc (root) và các cạnh nối các nút ượng nút tối đa trên mức i của cây nhị phân là 2 ng nút t i đa trên m c i c a cây nh phân là 2 ốc (root) và các cạnh nối các nút ức trừ mức cuối đều đạt ủ: là cây nhị phân thõa mãn mỗi nút lá đề có cùng độ sâu và các i-1 , t i thi u là 1 ( ốc (root) và các cạnh nối các nút ểu là 1 ( i≥1).
M t cây nh phân chi u cao h có không quá 2 ột nút đặc ều nhất là 2 con (con trái và con phải) Mỗi nút hoặc k -1 nút, k≥1.
M t cây nh phân có n nút có chi u cao t i thi u là [log ột nút đặc ều nhất là 2 con (con trái và con phải) Mỗi nút hoặc ốc (root) và các cạnh nối các nút ểu là 1 ( 2(n+1)].
3 Bi u di n cây nh phân ểu diễn cây nhị phân ễn cây nhị phân ịnh nghĩa:
Bi u di n b ng m ng: ểu là 1 ( ễn bằng mảng: ằng mảng: ải) Mỗi nút hoặc
V i cây nh phân đ y đ , ta đánh s các nút t 1 tr đi, h t m c này đ n m c khác, t trái ủ: là cây nhị phân thõa mãn mỗi nút lá đề có cùng độ sâu và các ốc (root) và các cạnh nối các nút ừ mức cuối đều đạt ở các mức trừ mức cuối đều đạt ến có dạng: ức trừ mức cuối đều đạt ến có dạng: ức trừ mức cuối đều đạt ừ mức cuối đều đạt qua ph i ải) Mỗi nút hoặc Dùng m ng V l u tr cây nh phân , nút th i c a cây đ ải) Mỗi nút hoặc ư ữ cây nhị phân , nút thứ i của cây được lưu trữ ở phần tử V(i) ức trừ mức cuối đều đạt ủ: là cây nhị phân thõa mãn mỗi nút lá đề có cùng độ sâu và các ượng nút tối đa trên mức i của cây nhị phân là 2 ư c l u tr ph n t V(i) ữ cây nhị phân , nút thứ i của cây được lưu trữ ở phần tử V(i) ở các mức trừ mức cuối đều đạt ử V(i).
• Ví d v i cây đày đ trên đ ụ với cây đày đủ ở trên được lưu trữ như sau: ủ: là cây nhị phân thõa mãn mỗi nút lá đề có cùng độ sâu và các ở các mức trừ mức cuối đều đạt ượng nút tối đa trên mức i của cây nhị phân là 2 ư c l u tr nh sau: ữ cây nhị phân , nút thứ i của cây được lưu trữ ở phần tử V(i) ư
RPTR : Con tr tr t i cây con ph i c a nút đó ỏ: ỏ: ải) Mỗi nút hoặc ủ: là cây nhị phân thõa mãn mỗi nút lá đề có cùng độ sâu và các
Trang 5• Ví d cây nh phân sau đây: ụ với cây đày đủ ở trên được lưu trữ như sau:
typedef struct TreeNode {
char key[20];
struct TreeNode *lChild;
struct TreeNode *rChild;
4.3 Tính s nút và chi u sâu c a cây ố nút và chiều sâu của cây ều sâu của cây ủa cây
int countNode(TreeNode *root){
Trang 6return 1+ld+rd;
} }
4.4 Duy t cây theo th t tr ệt cây theo thứ tự trước NLR ( ứ tự trước NLR ( ự trước NLR ( ước NLR ( c NLR (preoder Traversal)
Void printPreoder(TreeNode *root){
4.5 Duy t cây theo th t gi a LNR ( ệt cây theo thứ tự trước NLR ( ứ tự trước NLR ( ự trước NLR ( ữa LNR ( inoder Traversal)
Void printInoder(TreeNode *root){
4.6 Duy t cây theo th t sau LRN ( ệt cây theo thứ tự trước NLR ( ứ tự trước NLR ( ự trước NLR ( postoder Traversal)
void printPostoder(TreeNode *root){
Trang 7II Bài toán đ t ra ặt ra
1 Gi i thi u: ớc NLR ( ệt cây theo thứ tự trước NLR (
N u m t nút trong m t cây nh phân ho c không có con trái ho c không có con ph i ho c là ến có dạng: ột nút đặc ột nút đặc ặc ặc ải) Mỗi nút hoặc ặc nút lá thì con tr trái ho c ph i c a nút đó có giá tr NULL ỏ: ặc ải) Mỗi nút hoặc ủ: là cây nhị phân thõa mãn mỗi nút lá đề có cùng độ sâu và các M t cách tránh con tr NULL đó ột nút đặc ỏ:
là s d ng con tr này thay vì ch a giá tr NULL nó sẽ tr đ n nút cao h n trong cây đó là nút ử V(i) ụ với cây đày đủ ở trên được lưu trữ như sau: ỏ: ức trừ mức cuối đều đạt ỏ: ến có dạng: ơn trong cây đó là nút
t tiên ổ tiên M t ví d cho thao tác này là vi c cài đ t ột nút đặc ụ với cây đày đủ ở trên được lưu trữ như sau: ệt gọi là gốc (root) và các cạnh nối các nút. ặc threaded binary tree, đây là cây nh phân
mà trong đó các nút ch a con tr NULL sẽ đ ức trừ mức cuối đều đạt ỏ: ượng nút tối đa trên mức i của cây nhị phân là 2 c tr đ n ỏ: ến có dạng: inorder predecessor(nút ngay trư c nút đang xét trong th t gi a ho c tr đ n ức trừ mức cuối đều đạt ự giữa hoặc trỏ đến ữ cây nhị phân , nút thứ i của cây được lưu trữ ở phần tử V(i) ặc ỏ: ến có dạng: inorder sucecssor(nút ngay sau trong th t ức trừ mức cuối đều đạt ự giữa hoặc trỏ đến
gi a) ữ cây nhị phân , nút thứ i của cây được lưu trữ ở phần tử V(i) B ng cách này, chúng ta có th duy t cây mà không c n dùng đ quy ằng mảng: ểu là 1 ( ệt gọi là gốc (root) và các cạnh nối các nút ệt gọi là gốc (root) và các cạnh nối các nút .
C u trúc c a cây này khác m t chút so v i cây nh phân ất là 2 con (con trái và con phải) Mỗi nút hoặc ủ: là cây nhị phân thõa mãn mỗi nút lá đề có cùng độ sâu và các ột nút đặc :
typedef struct TreeNode {
char key;
struct TreeNode *lChild;
struct TreeNode *rChild;
int lFlag;//TRUE neu lChild tro toi con, FALSE neu toi thread
int rFlag;//TRUE neu rChild tro toi con, FALSE neu toi thread
}TreeNode;
Xét cây nh phân hình bên:
(Các lu ng liên k t đ c bi t th hi n ồng liên kết đặc biệt thể hiện ết đặc biệt thể hiện ặc biệt thể hiện ện – Lê Anh Vũ – Vũ Văn Tú – Nguyễn Hoàng Hải Đỗ Quốc Đạt ể hiện ện – Lê Anh Vũ – Vũ Văn Tú – Nguyễn Hoàng Hải Đỗ Quốc Đạt
b ng mũi tên đ t.) ằng mũi tên đứt.) ứt.)
Khi duy t cây theo th t gi a ta đ ệt gọi là gốc (root) và các cạnh nối các nút ức trừ mức cuối đều đạt ự giữa hoặc trỏ đến ữ cây nhị phân , nút thứ i của cây được lưu trữ ở phần tử V(i) ượng nút tối đa trên mức i của cây nhị phân là 2 c:
Nguy n Văn Thi n – Lê Anh Vũ – Vũ Văn Tú – Nguy n Hoàng H i Đ Qu c Đ t ện – Lê Anh Vũ – Vũ Văn Tú – Nguyễn Hoàng Hải Đỗ Quốc Đạt ải Đỗ Quốc Đạt ỗ Quốc Đạt ốc Đạt ạt Page 7
Trang 8Ta hãy xét ti p ví d : ến có dạng: ụ với cây đày đủ ở trên được lưu trữ như sau:
Chuy n cây nh phân sau thành cây TBT: ểu là 1 (
Duy t cây theo th t gi a: DBAEC Vì v y cây TBT t ệt gọi là gốc (root) và các cạnh nối các nút ức trừ mức cuối đều đạt ự giữa hoặc trỏ đến ữ cây nhị phân , nút thứ i của cây được lưu trữ ở phần tử V(i) ậy cây TBT tương ứng: ươn trong cây đó là nút ng ng: ức trừ mức cuối đều đạt
B không có con ph i vì v y có m t lu ng tr đ n A là nút ải) Mỗi nút hoặc ậy cây TBT tương ứng: ột nút đặc ỏ: ến có dạng: inorder successor Tươn trong cây đó là nút ng t các nút D ự giữa hoặc trỏ đến
và E Nút C không có con ph i nh ng nó không có nút ải) Mỗi nút hoặc ư inorder successor đ tr t i vì v y nó có ểu là 1 ( ỏ: ậy cây TBT tương ứng:
m t lu ng không tr đ n đâu ột nút đặc ỏ: ến có dạng:
Trang 92 Duy t cây theo không dùng đ quy ệt cây theo thứ tự trước NLR ( ệt cây theo thứ tự trước NLR (
2.1 Thu t toán ật toán.
2.1.1 Duy t theo th t gi a ệt cây theo thứ tự trước NLR ( ứ tự trước NLR ( ự trước NLR ( ữa LNR (
Bư c 1: T i nút hi n t i, tìm nút P ngay trạnh nối các nút ệt gọi là gốc (root) và các cạnh nối các nút ạnh nối các nút ư c nó trong th t gi a N u P không cóức trừ mức cuối đều đạt ự giữa hoặc trỏ đến ữ cây nhị phân , nút thứ i của cây được lưu trữ ở phần tử V(i) ến có dạng:con ph i thì P->rChild đải) Mỗi nút hoặc ượng nút tối đa trên mức i của cây nhị phân là 2 ử V(i) ạnh nối các nút ểu là 1 ( ỏ: ến có dạng:c s a l i đ tr đ n nút hi n t iệt gọi là gốc (root) và các cạnh nối các nút ạnh nối các nút
Bư c 2: T nút hi n t i, gán ừ mức cuối đều đạt ệt gọi là gốc (root) và các cạnh nối các nút ạnh nối các nút currentNode=currentNode->lChild (rẽ trái) h t ến có dạng:
m c có th , m i l n chuy n nút l i g i đ n hàm bức trừ mức cuối đều đạt ểu là 1 ( ểu là 1 ( ạnh nối các nút ọi là gốc (root) và các cạnh nối các nút ến có dạng: ở các mức trừ mức cuối đều đạt ư c 1 đ tìm các threads.ểu là 1 (
Bư c 3: In ra nút hi n t i, nút này không th rẽ trái đệt gọi là gốc (root) và các cạnh nối các nút ạnh nối các nút ểu là 1 ( ượng nút tối đa trên mức i của cây nhị phân là 2c n a do bữ cây nhị phân , nút thứ i của cây được lưu trữ ở phần tử V(i) ư c 2
Bư c 4: T i nút v a in ra, ki m tra rChild là con th t s hay thread N u là thread, ạnh nối các nút ừ mức cuối đều đạt ểu là 1 ( ậy cây TBT tương ứng: ự giữa hoặc trỏ đến ến có dạng:
gán currentNode=currentNode->rChild và in ra nút đó N u là con th c s , ến có dạng: ự giữa hoặc trỏ đến ự giữa hoặc trỏ đến
gán currentNode=currentNode->rChild
Xét ví d trên: ụ trên:
void
Nguy n Văn Thi n – Lê Anh Vũ – Vũ Văn Tú – Nguy n Hoàng H i Đ Qu c Đ t ện – Lê Anh Vũ – Vũ Văn Tú – Nguyễn Hoàng Hải Đỗ Quốc Đạt ải Đỗ Quốc Đạt ỗ Quốc Đạt ốc Đạt ạt Page 9
B ư c 1 T i nút A, ta tìm đ ạnh nối các nút ượng nút tối đa trên mức i của cây nhị phân là 2 c B là nút ngay sau A trong th ức trừ mức cuối đều đạt
t gi a, ta s a l i con tr ph i c a B đ n A ự giữa hoặc trỏ đến ữ cây nhị phân , nút thứ i của cây được lưu trữ ở phần tử V(i) ử V(i) ạnh nối các nút ỏ: ải) Mỗi nút hoặc ủ: là cây nhị phân thõa mãn mỗi nút lá đề có cùng độ sâu và các ến có dạng:
B ư c 2 Rẽ trái qua B, s a l i con tr ph i c a D, rẽ trái ử V(i) ạnh nối các nút ỏ: ải) Mỗi nút hoặc ủ: là cây nhị phân thõa mãn mỗi nút lá đề có cùng độ sâu và các
ti p đ n D ến có dạng: ến có dạng:
B ư c 3 D không có con trái, không rẽ ti p đ ến có dạng: ượng nút tối đa trên mức i của cây nhị phân là 2 c n a,iữ cây nhị phân , nút thứ i của cây được lưu trữ ở phần tử V(i) n raD D
B ư c 4 Ki m tra con tr ph i c a D không là con th c ểu là 1 ( ỏ: ải) Mỗi nút hoặc ủ: là cây nhị phân thõa mãn mỗi nút lá đề có cùng độ sâu và các ự giữa hoặc trỏ đến
s nên ta gán l i nút hi n t i là B và in ra B ự giữa hoặc trỏ đến ạnh nối các nút ệt gọi là gốc (root) và các cạnh nối các nút ạnh nối các nút. B
B ư c 5 Ki m tra con tr ph i c a B không là con th c ểu là 1 ( ỏ: ải) Mỗi nút hoặc ủ: là cây nhị phân thõa mãn mỗi nút lá đề có cùng độ sâu và các ự giữa hoặc trỏ đến
s nên ta gán l i nút hi n t i là A và in ra A ự giữa hoặc trỏ đến ạnh nối các nút ệt gọi là gốc (root) và các cạnh nối các nút ạnh nối các nút. A
B ư c 6 Ki m tra con tr ph i c a A là con th c s nên ểu là 1 ( ỏ: ải) Mỗi nút hoặc ủ: là cây nhị phân thõa mãn mỗi nút lá đề có cùng độ sâu và các ự giữa hoặc trỏ đến ự giữa hoặc trỏ đến
ta gán l i nút hi n t i là C và quay l i b ạnh nối các nút ệt gọi là gốc (root) và các cạnh nối các nút ạnh nối các nút ạnh nối các nút ư c 1 v i
nút hi n t i là C ệt gọi là gốc (root) và các cạnh nối các nút ạnh nối các nút.
B ư c 7 Rẽ trái h t m c đ n E In ra E ến có dạng: ức trừ mức cuối đều đạt ến có dạng: E
B ư c 8 Con tr ph i c a E ch đ n NULL nên ta k t thúc ỏ: ải) Mỗi nút hoặc ủ: là cây nhị phân thõa mãn mỗi nút lá đề có cùng độ sâu và các ỉnh : là cây nhị phân mà các nút ở các mức trừ mức cuối đều đạt ến có dạng: ến có dạng:
Trang 10inorder(TreeNode *root){
TreeNode *currentNode, *tempNode;
currentNode=root;
while(currentNode!=NULL){ /*Nut cuoi cung trong thu tu giua se
co *rChild bang NULL va sau
lastNode->rChild vong lap ket thuc*/
tempNode=findInorderPre(currentNode); /*Tim nut nhan
currentNode lam right thread, gan lai
rChild cua nut do*/
/*Re trai lien tuc den khi gap nut khong co con trai thi in ra*/
while(currentNode->lFlag==TRUE&¤tNode->lChild!=NULL){ currentNode=currentNode->lChild;
2.1.2 Duy t theo th t tr ệt cây theo thứ tự trước NLR ( ứ tự trước NLR ( ự trước NLR ( ước NLR ( c
Bư c 1: T i nút hi n t i, tìm nút P ngay trạnh nối các nút ệt gọi là gốc (root) và các cạnh nối các nút ạnh nối các nút ư c nó trong th t gi a N u P không cóức trừ mức cuối đều đạt ự giữa hoặc trỏ đến ữ cây nhị phân , nút thứ i của cây được lưu trữ ở phần tử V(i) ến có dạng:con ph i thì P->rChild đải) Mỗi nút hoặc ượng nút tối đa trên mức i của cây nhị phân là 2 ử V(i) ạnh nối các nút ểu là 1 ( ỏ: ến có dạng:c s a l i đ tr đ n nút hi n t i In ra nút hi n t iệt gọi là gốc (root) và các cạnh nối các nút ạnh nối các nút ệt gọi là gốc (root) và các cạnh nối các nút ạnh nối các nút
Bư c 2: T nút hi n t i, gán ừ mức cuối đều đạt ệt gọi là gốc (root) và các cạnh nối các nút ạnh nối các nút currentNode=currentNode->lChild (rẽ trái) h t ến có dạng:
m c có th , m i l n chuy n nút l i g i đ n hàm bức trừ mức cuối đều đạt ểu là 1 ( ểu là 1 ( ạnh nối các nút ọi là gốc (root) và các cạnh nối các nút ến có dạng: ở các mức trừ mức cuối đều đạt ư c 1 đ tìm các threads ểu là 1 (
đ ng th i in ra nút hi n t i.ờng thông tin ệt gọi là gốc (root) và các cạnh nối các nút ạnh nối các nút
Trang 11Bư c 3: T i nút không th rẽ trái đạnh nối các nút ểu là 1 ( ượng nút tối đa trên mức i của cây nhị phân là 2c n a, ki m tra rChild là con th t s hay ữ cây nhị phân , nút thứ i của cây được lưu trữ ở phần tử V(i) ểu là 1 ( ậy cây TBT tương ứng: ự giữa hoặc trỏ đến
Xét ví d trên: ụ trên:
void
preorder(TreeNode *root){
Nguy n Văn Thi n – Lê Anh Vũ – Vũ Văn Tú – Nguy n Hoàng H i Đ Qu c Đ t ện – Lê Anh Vũ – Vũ Văn Tú – Nguyễn Hoàng Hải Đỗ Quốc Đạt ải Đỗ Quốc Đạt ỗ Quốc Đạt ốc Đạt ạt Page 11
B ư c 1 T i nút A, ta tìm đ ạnh nối các nút ượng nút tối đa trên mức i của cây nhị phân là 2 c B là nút ngay sau A trong th ức trừ mức cuối đều đạt
t gi a, ta s a l i con tr ph i c a B đ n A In ra A ự giữa hoặc trỏ đến ữ cây nhị phân , nút thứ i của cây được lưu trữ ở phần tử V(i) ử V(i) ạnh nối các nút ỏ: ải) Mỗi nút hoặc ủ: là cây nhị phân thõa mãn mỗi nút lá đề có cùng độ sâu và các ến có dạng:
B ư c 4 Ki m tra con tr ph i c a D không là con th c ểu là 1 ( ỏ: ải) Mỗi nút hoặc ủ: là cây nhị phân thõa mãn mỗi nút lá đề có cùng độ sâu và các ự giữa hoặc trỏ đến
s nên ta gán l i nút hi n t i là B ự giữa hoặc trỏ đến ạnh nối các nút ệt gọi là gốc (root) và các cạnh nối các nút ạnh nối các nút.
B ư c 5 Ki m tra con tr ph i c a B không là con th c ểu là 1 ( ỏ: ải) Mỗi nút hoặc ủ: là cây nhị phân thõa mãn mỗi nút lá đề có cùng độ sâu và các ự giữa hoặc trỏ đến
s nên ta gán l i nút hi n t i là A ự giữa hoặc trỏ đến ạnh nối các nút ệt gọi là gốc (root) và các cạnh nối các nút ạnh nối các nút.
B ư c 6 Ki m tra con tr ph i c a A là con th c s nên ểu là 1 ( ỏ: ải) Mỗi nút hoặc ủ: là cây nhị phân thõa mãn mỗi nút lá đề có cùng độ sâu và các ự giữa hoặc trỏ đến ự giữa hoặc trỏ đến
ta gán l i nút hi n t i là C và quay l i b ạnh nối các nút ệt gọi là gốc (root) và các cạnh nối các nút ạnh nối các nút ạnh nối các nút ư c 1 v i
nút hi n t i là C ệt gọi là gốc (root) và các cạnh nối các nút ạnh nối các nút.
B ư c 8 Rẽ trái đ n E In ra E ến có dạng: E
B ư c 9 Con tr ph i c a E ch đ n NULL, ta k t thúc ỏ: ải) Mỗi nút hoặc ủ: là cây nhị phân thõa mãn mỗi nút lá đề có cùng độ sâu và các ỉnh : là cây nhị phân mà các nút ở các mức trừ mức cuối đều đạt ến có dạng: ến có dạng: