Hiển thị kết quả từ 1 đến 3 / 3
  1. #1
    Tham gia
    22-10-2009
    Bài viết
    13
    Like
    0
    Thanked 0 Times in 0 Posts

    Câu hỏi, cần giúp đỡ bài tập về Cấu trúc dữ liệu và giải thuật

    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 !!!
    Quote Quote

  2. #2
    Tham gia
    03-03-2010
    Bài viết
    1
    Like
    0
    Thanked 0 Times in 0 Posts
    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

  3. #3
    Tham gia
    29-10-2009
    Bài viết
    6
    Like
    0
    Thanked 0 Times in 0 Posts
    Code:
    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

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •