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

Đề tài: [HELP] Xóa 1 node trong cây nhị phân

  1. #1
    Ngày gia nhập
    12 2016
    Bài viết
    1

    Question Xóa 1 node trong cây nhị phân

    Tìm giúp em lỗi với. Không biết sai chỗ nào mà ko chạy được ạ
    Code:
    typedef struct HANGHOA {
    	int msmh;
    	char tenhang[50];
    }HH;
    #define ElementType HANGHOA
    void MoveLeftMostNode(TNode *&p, TNode *&q)		//Tìm phần tử trái nhất cây con bên phải
    {
    	if (q->pLeft != NULL)
    	{
    		MoveLeftMostNode(p, q->pLeft);
    	}
    	else //Đã tìm thấy trái nhất.
    	{
    		p->key = q->key;
    		p = q;
    		q = q->pRight;
    	}
    }
    void DeleteNode1(TNode *&root, ElementType x)
    {
    	TNode *p;
    	p = root;
    	if (p == NULL)
    		return;
    	else {
    		while (p->key.msmh != x.msmh)
    		{
    			if (p->key.msmh > x.msmh)
    				p = p->pLeft;
    			if (p->key.msmh < x.msmh)
    				p = p->pRight;
    		}
    		//Xóa root
    		TNode *temp = p;
    		if (p->pLeft == NULL)
    		{
    			p = p->pRight;
    		}
    		else
    			if (p->pRight == NULL)
    			{
    				p = p->pLeft;
    			}
    			else
    			{
    				MoveLeftMostNode(p, root->pRight);
    			}
    		delete temp;
    	}
    }
    Đã được chỉnh sửa lần cuối bởi biem008 : 06-12-2016 lúc 09:32 AM.

  2. #2
    Ngày gia nhập
    02 2014
    Nơi ở
    TP.HCM
    Bài viết
    902

    Hà tiện chi không đưa ra khai báo của TNode vậy bạn, sẵn đưa mã vào khung C/C++ cho dễ nhìn. Rồi không chạy thì có báo gì không, hiện tượng gì, ..., như vậy dễ cho bạn nào đó muốn giúp bạn. Nhớ mô tả các trường trong TNode như key dùng để làm gì rồi msmh trong key dùng để làm gì. Chúc may mắn.

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