Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more
Download
Standard view
Full view
of .
Look up keyword
Like this
19Activity
0 of .
Results for:
No results containing your search query
P. 1
gia thuat cay nhi phan

gia thuat cay nhi phan

Ratings:

5.0

(1)
|Views: 3,349 |Likes:
Published by Hoàng Hải

More info:

Published by: Hoàng Hải on Jun 27, 2008
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOC, PDF, TXT or read online from Scribd
See more
See less

09/13/2012

pdf

text

original

 
 Nhân thi tốt nghiệp tui có ôn lại cấu trúc dữ liệu và giải thuật nên post lên một số bài về phần này.Bạn nào quan tâm đến môn này có thể vào đây trao đổi. Topic này tui trình bàyvề phần cây nhị phân trước.Ta có khai báo sau:typetrocay=^nut;nut = recordinfo:byte;left,right:trocay;end;var t:trocay;các thuật toán dưới đây đều dùng cấu trúc con trỏ như trên- Cây nhị phân là gì: nó là một dạng đồ thị mà mỗi nút chỉ có nhiều nhất là 2 nútcon trong khai báo trên 2 con trỏ left và right dùng để trỏ đến 2 nút con- Một cây nhị phân gọi là đầy đủ nếu mỗi nút đều có 2 nút con trừ những nút láBây giờ tui xin trình bày một vài thuật toán cơ bản liên quan đến cây nhị phân
1: Duyệt cây nhị phân (gồm duyệt trước, duyệt giữa và duyệt sau)
{---------------------------------------} procedure duyettruoc(T:trocay);beginif T<>nil thenbeginwriteln(t^.info);duyettruoc(t^.left);duyettruoc(t^.right);end;end;{----------------------------------------} procedure duyetgiua(T:trocay);beginif T<>nil thenbeginduyettruoc(t^.left);writeln(t^.info);duyettruoc(t^.right);end;end;
Phần duyệt sau tương tự như trên
2 - tìm số nút trên cây
Muốn tìm số nút trên cây ta có thuật toán- nếu cây nhị phân không tồn tại một giá trị nút nào thì số nút trả về là 0- Ngược lại số nút sẽ bằng số nút bên nhánh trái + số nút bên nhánh phải + 1
{----------tra ve so nut tren cay---------} function sonut(t:trocay):byte;begin
 
if t=nil then sonut:=0else sonut:= sonut(t^.left)+ sonut(t^.right)+1;end;
3- Đếm số nút lá trên cây và in các nút lá
- Một nút gọi là nút lá nếu nó có giá trị left và right đều bằng nil 
{---------dem so nut la tren cay-----------} function sonutla(t:trocay):byte;beginif t=nil then sonutla:=0elseif (t^.left=nil)and(t^.right=nil) thensonutla:=1elsebeginsonutla:=sonutla(t^.left)+sonutla(t^.right);end;end;{----------in ra cac nut la cua cay-------} procedure innutla(t:trocay);beginif t<>nil thenif (t^.left=nil)and(t^.right=nil) thenwriteln(t^.info)elsebegininnutla(t^.left);innutla(t^.right);end;end;
d(-_-)bcocojaryĐiều hànhThành viên từ: 21/01/2007Quốc tịch: VietnamBài viết: 92 Gởi ngày: 15/05/2007 lúc 8:19 Sáng | IP Logged
4 - Tìm nút cha của một nút
 
-
để xác định nút cha của một nút đầu tiên ta tìm bên nhánh trái trước nếu nhận thấy nútcon của một nút nào đó có giá trị bằng nút cần tìm nút cha thì nút hiện tại là nút cần tìmvà thoát chương trình nếu không thì ta tiếp tục duyệt. Sau khi duyệt xong nhánh trái vânchưa tìm thấy kết quả ta sẽ tìm bên nhánh phải
{------------tim nut cha cua mot nut--------} function nutcha(t:trocay;p:trocay):trocay;beginif(t=nil) then nutcha:=nil elseif (t^.left=p) or (t^.right=p) thenbeginnutcha:=t;exit;end elsebeginif nutcha(t^.left,p)<>nil then nutcha:=nutcha(t^.left,p)else nutcha:=nutcha(t^.right,p);end;end;
 
5- tính chiếu cao của cây
{--------tinh chieu cao cua cay------------------} function chieucao(t:trocay):byte;beginif(t=nil) then chieucao:=0elseif (chieucao(t^.left)>chieucao(t^.right) )then chieucao:=chieucao(t^.left)+1else chieucao:=chieucao(t^.right)+1;end;
6 - Tính tổng giá trị tại một mức cụ thể nào đó
Mức của cây nhị phân bắt đầu là 0
{---------tinh tong gia tri tai mot muc nao do tren cay---------}{ xem nhu gia tri muc nhap vao thoa dieu kien } function tongmuc(t:trocay;muc:byte):byte;beginif t=nil then tongmuc:=0elseif (muc=0) then tongmuc:=t^.infoelsebegindec(muc);tongmuc:=tongmuc(t^.left,muc)+tongmuc(t^.right,muc);end;end;
7 - Tìm giá trị lớn nhất trên cây nhị phân

Activity (19)

You've already reviewed this. Edit your review.
1 hundred reads
1 thousand reads
Eva Pham liked this
LHT2001 liked this
meoconbonmat liked this
ngotinh_it liked this
vuhappy liked this

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->