IIỊ CĐY NHỊ PHĐN (BINARY TREE) 1 Ðịnh nghĩa

Một phần của tài liệu Tài liệu cấu trúc dữ liệu cơ bản (Trang 45)

IV. GIẢI THUẬT MÊ HÓA HUFFMAN 1.Đặt vấn đề

5. Quy tắc biểu diễn một biểu thức toân học trín cđy TOP

IIỊ CĐY NHỊ PHĐN (BINARY TREE) 1 Ðịnh nghĩa

1. Ðịnh nghĩa

TOP Cđy nhị phđn lă một cđy mă trong đó mỗi nút chỉ có tối đa 2 nút con (2 nhânh)

Trong một cđy nhị phđn ta cần phđn biệt con trâi (leftchild) vă con phải (rightchild) của một nút.

Ta quy ước vẽ nút con trâi ở bín trâi nút cha vă nút con phải ở bín phải nút chạ 1 2 3 4 5 Ví dụ:

Nếu ta xem (a), (b) lă cđy vă lă cđy có thứ tự thì 2 cđy năy chỉ lă một. Nếu nói lă cđy nhị phđn thì đđy lă 2 cđy khâc nhaụ

Một số dạng đặc biệt của cđy nhị phđn :

Cđy lệch trâi : Câc nút trín cđy chỉ có con trâi không có con phảị Cđy lệch phải : Câc nút trín cđy chỉ có con phải không có con trâị

Cđy zic-zắc: Lă cđy mă nếu nút ở mức i chỉ có một con (phải hoặc trâi) thì nút ở mức i+1 cũng chỉ có 1 con (phải hoặc trâi).

Cđy nhị phđn đầy đủ: Lă cđy nhị phđn mă câc nút đều có đủ 2 con trâi vă phải (trừ nút lâ).

2. Tính chất

TOP

Câch căi đặt năy sẽ rất phí miền nhớ khi cđy nhị phđn lă một cđy có dạng đặc biệt cđy lệch trâi, cđy lệch phải, cđy zic-zắc,... vă chỉ thích hợp với cđy nhị phđn đầy đủ.

Khai bâo : Const Maxlenght = ... ; Type LabelType = ... ; Node = Record LeftChild : Integer; RightChild : Integer; Label : LabelType; End; Tree = array [1 .. Maxlenght ] of Node ; b. Căi đặt cđy nhị phđn bằng con trỏ :

Trong câch căi đặt năy mỗi nút sẽ lă một record gồm có 3 trường : + Left : con trỏ giữ địa chỉ của nút con trâị

+ Right : con trỏ giữ địa chỉ của nút con phảị + Info : Lưu trữ nhản (nội dung) của nút.

Left Info Right Khai bâo : Type ElementType = ... ; Tree = ^ Node ; Node = Record Elements : ElementType; Left : Tree ; Right : Tree ; End;

Thủ tục khởi tạo cđy rỗng :

Ðể có thể truy cập đến câc nút trín cđy, ta cần có một con trỏ T để trỏ đến nút gốc của cđy đó. Khi cđy rỗng thì con trỏ sẽ trỏ đến một giâ trị đặt biệt Nil.

Procedure MakeNullTree (Var T : Integer);

Begin

T := Nil; End;

Hăm tạo cđy :

Function MakeTree ( x : ElementType ; L, R : Tree) : Tree;

Var T : Tree ; Begin

New (T) ;

T. Left := L; T. Right := R; MakeTree := T; End;

Hăm xâc định chiều cao của cđy

Function HighTree( T : Tree ) : Integer ;

Function Max ( a, b : Integer ) : Integer; Begin

If a < b then Max := b Else Max := a ; End;

Begin { High tree } If T = Nil then HighTree := 0 Else

If ( T^.Left = Nil ) and ( T^.Right = Nil ) then HighTree := 0

Else HighTree := Max (HighTree(T^.Left), HighTree (T^.Right) + 1; End;

Hăm xâc định chiều cao của cđy

Function NumNode( T : Tree ) : Integer ;

Begin If T = Nil then NumNode := 0

Else NumNode := (NumNode(T^.Left), NumNode (T^.Right) + 1; End;

Duyệt cđy nhị phđn

Duyệt tiền tự : (NLR)

Procedure PreOrder ( T : Tree );

Begin

If T < > Nil then

Begin

Write ( T^.Elements ); PreOrder (T^.Left);

PreOrder (T^.Right); End; End;

Duyệt trung tự : (LNR)

Procedure InOrder ( T : Tree );

Begin

If T < > Nil then

Begin

InOrder (T^.Left);

Write ( T^.Elements ); InOrder (T^.Right); End;

End;

Duyệt hậu tự : (LNR)

Procedure PostOrder ( T : Tree );

Begin

Begin PostOrder (T^.Left); PostOrder (T^.Right); Write ( T^.Elements ); End; End;

Hăm tính trị của một biểu thức

- Cđy biểu thức lă cđy nhị phđn trong đó câc nút trung gian sẽ chứa câc toân tử, còn câc lâ sẽ chứa câc toân hạng.

- Khi thực hiện tính giâ trị của một cđy biểu thức, ta sẽ tính theo đúng thứ tự của phĩp duyệt cđy trung tự.

Function Value(T : Tree) : Real;

Var x : Real; Code : integer; Begin

If (T^.Left = Nil) and (T^.Right = Nil) then Begin

Val (T^.Elements, x , Code); Value := x;

End Else Begin

If T^.Elements = '+' then Value:= Value (T^.Left) + Value (T^.Right); If T^.Elements = '-' then Value:= Value (T^.Left) - Value (T^.Right);

If T^.Elements = '*' then Value:= Value (T^.Left) *Value (T^.Right); If T^.Elements = '/' then

If Value(T^.Right) < > 0 then

Value:= Value (T^.Left) / Value (T^.Right) Else Write('Loi chia cho 0 ');

End; End;

Một phần của tài liệu Tài liệu cấu trúc dữ liệu cơ bản (Trang 45)

Tải bản đầy đủ (DOC)

(91 trang)
w