PDA

View Full Version : bài tập về Cấu trúc dữ liệu và giải thuật



caungoc_9x
10-12-2009, 10:02
anh chị nào giúp e với.bọn e fải làm Cài đặt giải thuật duyệt cây (trước ,sau,giữa). bọn e fải làm duyệt cây sau. Pác nào giúp e với. e xyn cảm ơn rất rấ ấ ất nhiều !!!

tuananhth2cpy
05-03-2010, 20:39
hjx cai mon nay kho phet ma .ca mon dien tu so cai phan dai so booble gi do cung kho lam ai biet bao mjnh voi

nhanphuan
04-04-2010, 00:35
uses crt;
type nodePtr= ^node;
node= record
key: integer;
left,right: NodePtr
end;
var root,tk: nodePtr; x,chon,i,n: integer;
a: array[1..100] of integer; f: text;
procedure Chen(x: integer);
var p,q: nodePtr;
begin new(q); q^.key:=x; q^.left:=Nil; q^.right:=nil;
if root=NIL then root:=q else
begin p:=root;
while p<>NIL do
begin if x < p^.key then begin if p^.left <> nil then p:=p^.left
else begin p^.left:=q; p:=nil end
end
else begin if x>p^.key then begin
if p^.right<>nil then p:=p^.right
else begin p^.right:= q; p:=nil end
end
else p:=nil;
end
end;
end;
end;
procedure TimKiem(x: integer; var p: nodePtr);
var found: boolean;
begin p:= root; found:= false;
while(p<>nil) and (not found) do
if p^.key=x then found:= true
else if x < p^.key then p:= p^.left else p:= p^.right;

end;
procedure InRong;
const max =50;
var truoc,cuoi,dem: integer; p,q: nodePtr;
h: array[1..max] of nodePtr;
begin h[1]:=root; truoc:=1; cuoi:=1; dem:=1;
while (dem>0) do
begin q:=h[truoc]; write(q^.key,' : '); p:= q^.left;
if p<>nil then begin write(p^.key,' - '); inc(cuoi);
h[cuoi]:=p; inc(dem);
end else write('NIL - ');
p:= q^.right;
if p<>nil then begin writeln(p^.key);
inc(cuoi); h[cuoi]:=P; inc(dem);
end else writeln('NIL');
h[truoc]:=nil; inc(truoc); dec(dem);
end;
end;
procedure Xoa(var p: nodePtr);
var q,q1: nodePtr;
begin
if p^.right=NIL then begin q:=p; p:=p^.left end
else if p^.left=NIL then begin q:=p; p:=p^.right end
else begin q:= p^.left;
if q^.right=nil then begin p^.key:=q^.key;
p^.left:=q^.left
end
else begin
repeat q1:=q; q:=q^.right until q^.right=nil;
p^.key:=q^.key; q1^.right:= q^.left;
end
end;
dispose(q);
end;
procedure PreOrder(p: nodePtr);
begin if p<> nil then
begin writeln(p^.key); PreOrder(p^.left); PreOrder(p^.right) end;
end;
procedure InOrder(p: nodePtr);
begin if p<> nil then
begin InOrder(p^.left);writeln(p^.key); InOrder(p^.right) end;
end;
procedure PostOrder(p: nodePtr);
begin if p<> nil then
begin PostOrder(p^.left); PostOrder(p^.right); writeln(p^.key) end;
end;
begin root:=nil; clrscr;
repeat
writeln('1.Chen 2.Xoa 3.TimKiem 4.InRong 5.PreOder ');
write('6.InOrder 7.PostOrder 8.NhapTep 9.Exit. Chon:');
readln(chon);
case chon of
1: begin write('Nhap khoa moi: '); readln(x); Chen(x);
end;
2: begin write('Nhap khoa can xoa: '); readln(x);
TimKiem(x,tk);
if tk<>nil then Xoa(tk)
else writeln('Khong tim thay gia tri khoa');
end;
3: begin write('Nhap khoa can tim : '); readln(x);
TimKiem(x,tk);
if tk<>NIL then writeln('Da tim thay dinh co khoa : ',tk^.key)
else writeln('Khong tim thay dinh co khoa nay');
end;
4: InRong;
5: begin writeln('Danh sach PreOrder: '); PreOrder(Root) end;
6: begin writeln('Danh sach InOrder: '); InOrder(Root) end;
7: begin writeln('Danh sach PostOrder: '); PostOrder(Root) end;
8: begin assign(f,'Cay.dat'); reset(f); readln(f,n);
for i:=1 to n do begin read(f,a[i]); Chen(a[i]) end;
close(f); write('Da nhap xong cay tu tep...'); readln;
end;
end
until chon=9;
end.



Chi tiết xem tại : http://dhti.tk/showthread.php?p=205#post205