Từ 1 tới 3 trên tổng số 3 kết quả

Đề tài: [ Solved ]Thuật toán trong cây nhị phân

  1. #1
    Ngày gia nhập
    01 2008
    Bài viết
    20

    Mặc định [ Solved ]Thuật toán trong cây nhị phân

    Các bạn cho mình hỏi 1 vấn đề

    PHP Code:
    class NODE 
    {
    public:
        
    Element data;// kieu du lieu 
        
    int posmean// vi tri tu cua nghia
        
    NODE*left,*right;
        
    NODE() // ham khoi tao NODE cho vi tri left va right dinh nghia cau truc
        
    {
            
    left=0;
            
    right=0;
        };
        
    NODE(Element el//ham khoi tao cho cho vi tri nghia va dinh nghia du lieu
        
    {
            
    strcpy(data,el);
            
    posmean=x;
            
    left=0;
            
    right=0;
        };
    };
    /////////////////////////// CLASS BINTREE
    class BinTree
    {
    private:
        
    NODE*root;
        
    NODE*current;
        
    int error;
        
    // ham private
        
    void Preorder(NODE*);
        
    void Preorder(FILE*,NODE*);
        
    void Inorder(NODE*);
        
    void Inorder(FILE*,NODE*);
        
    NODE*FindNode(KeyType key);
        
    NODE*Righty(NODE*);
        
    NODE*FindParent(Keytype);
        
    void DestroyNode(NODE*);

    public:
        
    BinTree() // dinh nghia cau truc du lieu bintree
        
    {
            
    root=0;
            
    left=0;
            
    right=0;
        };
        
    void Insert(Elementint); // hai kieu du lieu ma ta can insert
        
    void Remove(Keytype); // kieu du lieu ma ta can Remove
        
    void Find(Keytype);
        
    void Traverse(int oder);
        
    void Traverse(FILE*,int order);
        
    int Retrieve(void);
        
    void Destroy(void);
        
    int HasError(void);

    };

    void BinTree::insert(Element el,int x// chen vao phan tu
     
    {
        if (
    root==0)
            
    root= new Node(el,x); // dua phan tu moi vao goc voi vi tri x
        
    else
        {
            [
    COLOR="Red"]Node *p=findNode(el); // khoi tao[/COLOR]
            
    if (p==0)
            {
                
    Node *parent=root;
                if (
    p!=root)
                    [
    COLOR="Red"]parent=findParent(el);[/COLOR]
                if(
    strcmpi(parent->data,el)<0// so sanh hai chuoi ko phan biet chu hoa va thuong
                
    {
                    
    parent->right= new Node(el,x);
                    
    current=parent->right;
                }
                else 
                {
                    
    parent->left= new Node(el,x);
                    
    current=parent->left;
                }
                
    error=0;
            }
            else
                
    error=1;
        }

    cái chỗ Node *p=findNode(el) và parent=findParent(el) được hiểu sao vậy ?
    theo mình hiểu là khởi tao p kiẻu dữ liệu là Node còn chỗ findNode(el) ko biết hiểu sao mong các bạn giúp

  2. #2
    Ngày gia nhập
    07 2007
    Nơi ở
    Sơn La
    Bài viết
    133

    Code trên không thấy bạn viết các thủ tục find, nên thế này nha:
    Node *p=findNode(el);
    Là truyền vào kiểu dữ liệu el ( hiểu là khóa tìm ) . Khi đó trong findNode(el) sẽ tiến hành một thủ tục duyệt cây ( nếu code của bạn thì sẽ viết riêng cái nữa ).
    Nếu tìm thấy thì trả về kiểu Node (con trỏ ). Khi đó bạn sẽ khai thác các dữ liệu trên giá trị trả về đó. Ngược lại nó sẽ trả về NULL ( hiểu là false ).
    Còn
    parent=findParent(el)
    Tiến hành tương tự như trên. Tuy nhiên thủ tục khác đi một chút là:
    Trong quá trình tìm nó tạo thêm một biến lưu lại cha của node đang duyệt.
    Nếu nút đang duyệt có khóa el thì nó sẽ trả về cái biến lưu trữ kia.
    Rồi cũng tiến hành thao tác với dữ liệu trên node trả về đó ( Xóa node khóa el, thêm ...).
    Ngược lại cũng trả về NULL
    Trao đổi kiến thức sẽ giúp ta tiếp cận nhanh với kiến thức.

  3. #3
    Ngày gia nhập
    01 2008
    Bài viết
    20

    Mình xin rất cảm ơn bạn ! mong bạn giúp mình gấp vấn đề này dc không ạ http://forums.congdongcviet.com/show...4981#post44981 mình đang rất cần !!!

Các đề tài tương tự

  1. [ Solved ]Thuật toán để tạo ra công thức bất kì
    Gửi bởi caibangbangchu trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 26
    Bài viết cuối: 19-11-2008, 12:18 AM
  2. Thuật toán trong lý thuyết đồ thị ( Help)
    Gửi bởi sonmobai trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 12-11-2008, 03:22 PM
  3. [ Solved ]Xin xem giúp các thuật toán sắp xếp!
    Gửi bởi maucoden trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 04-10-2008, 06:52 AM
  4. [ Solved ]Kĩ thuật hướng đối tượng
    Gửi bởi khauthancong_arsenal trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 24-09-2008, 12:18 PM
  5. [Solved]Lỗi cơ bản trong một thuật toán sắp xếp đơn giản
    Gửi bởi hacker_mubaohiem trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 21-03-2008, 06:35 PM

Quyền hạn của bạn

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