[Cây] Cây tổng quát
Đã rất nhiều lần mình tìm hiểu cách cài đặt và nhập, duyệt của cây tổng quát, tuy nhiên thì chỉ tìm được cách cài đặt theo một số phương pháp chứ chưa thấy code nhập và duyệt cây tổng quát cụ thể…
Có nhiều cách cài và duyệt cây, các bạn có thể tham khảo trên mạng. Bài này mình chỉ đề cập đến 1 phần nhỏ.

Dưới đây là code cài đặt, nhập, và duyệt cây tổng quát theo thứ tự trước, các phép toán khác các bạn tự phát triển hoặc trong một ngày đẹp trời nào đó mình lại viết tiếp 😀
PROGRAM CAY_TONG_QUAT;
uses crt;
const n = 12;
type
item = char; {Kieu phan tu}
pointer = ^node;
node = record
info : item;
numChild : integer; {so con cua 1 nut}
child : array[1..n] of pointer;
end;
var
T : pointer;
procedure inputTree(var T: pointer); {nhap vao cay}
var
i: integer;
p: pointer;
begin
if T = nil then
begin
new(T);
write('Nhap nut goc: ');
readln(T^.info);
end;
p:= T;
write('Nhap so con cua node ', p^.info, ' : ');
readln(p^.numChild);
for i:=1 to p^.numChild do
begin
new (p^.child[i]);
write('Nhap nut con thu ', i, ' : ');
readln(p^.child[i]^.info);
end;
for i:= 1 to p^.numChild do
inputTree(p^.child[i]);
end;
procedure duyetTruoc(T: pointer);
var
i: integer;
begin
if T <> nil then
begin
write(T^.info, ' ');
for i:=1 to T^.numChild do
duyetTruoc(T^.child[i]);
end;
end;
BEGIN
clrscr;
inputTree(T);
duyettruoc(T);
readln;
END.
Code cũng dễ hiểu nên mình không chú thích gì thêm 🙂
Đọc thêm: Một số phép toán trên cây nhị phân tìm kiếm



a ơi cái này có phải là cây đồ thị trie không ạ
Mình không hiểu bạn nói đến cây đồ thị là thế nào, đề bài nêu rõ là cây tổng quát mà 🙂
Cảm ơn về bài code. Thuật toán rất dễ hiểu. Mặc dù tôi chưa học ngôn ngữ lập trình này, tôi chỉ đang học C++.