Thứ Hai, 25 tháng 11, 2013

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 :D


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
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 :)