cuốn sách gpt4 ai đã làm

C二叉搜索树实现——插入

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 04:51:16 27 4
mua khóa gpt4 Nike

Tôi đang cố gắng tạo một chương trình lấy danh sách các từ làm đầu vào và sắp xếp chúng thành cây nhị phân để có thể tìm thấy chúng, chẳng hạn như từ điển. Đây là những gì tôi đã làm cho đến nay, nhưng newEl -> el = đầu vào; Xảy ra lỗi phân đoạn, tôi biết đó là do nó đang cố trỏ đến NULL el được tạo khi cây mới xuất hiện, nhưng tôi không chắc cách tốt nhất để cải thiện mã của mình là gì. Có ai có ý tưởng gì không? Cảm ơn.

nút cấu trúc *tra(nút cấu trúc * bắt đầu, Kiểu nhập) {
nút cấu trúc * thisNode = bắt đầu;

nếu (thisNode == NULL)

Nhập hiện tại = thisNode -> el;

if (strcmp(input, current) > 0)
return tra(thisNode -> phải, đầu vào);

ngược lại nếu (strcmp(input, current) < 0)
return tra(thisNode -> left, input);

khác
trả lại thisNode;
}
}

Ta chèn(Loại đầu vào, Ta ta) {
if ((find(input, ta)) == FALSE) {
newEl -> el = đầu vào;

}

trở lại ta;
}

Boolean find(Type input, Ta ta) {
if (tra(ta -> head, input) == NULL)
trả về SAI;
}

câu trả lời hay nhất

Đây là một con trỏ tới một con trỏ tương đương:

typedef char *Loại;
nút cấu trúc {
nút cấu trúc *trái, *phải;
Loại tải trọng;
};

nút cấu trúc **find_pp(nút cấu trúc **pp, Kiểu nhập) {
nút cấu trúc *thisNode;

trong khi ( thisNode = *pp ) {
int khác biệt;
diff = strcmp(input, thisNode->payload);
nếu (!diff) bị hỏng;
pp = (khác biệt <0) ? &thisNode->left : &thisNode->right;
}
trả lại trang;
}

Tìm Boolean (nút cấu trúc *root, Nhập điều)
{
nút cấu trúc **pp;
pp = find_pp( &root, thing);
trả về (*pp) ? Đúng : Sai;
}

chèn void (nút cấu trúc **pp, Nhập điều)
{
nút cấu trúc *newNode;
pp = find_pp(pp, vật);

if (*pp) return; /* đã tồn tại */
*pp = newNode = malloc (sizeof *newnode);
newNode->payload = strdup(thing);
newNode->left = NULL;
newNode->right = NULL;

return;
}

Một số lưu ý:

  • Chèn một nút vào cây có nghĩa là: gán cho một con trỏ trước đó là NULL
  • Một cây trống cũng là một cây: chỉ là một con trỏ (đến gốc của cây) trống rỗng
  • Tìm một nút trong cây có nghĩa là: tìm vị trí (:= con trỏ) ở nơi cần có (nếu nó tồn tại)
  • Nếu nó không tồn tại, con trỏ này là nơi cần chèn để làm cho nó tồn tại
  • Vẽ sơ đồ (bằng giấy và bút chì) có thể hữu ích.

Về việc triển khai - chèn cây tìm kiếm nhị phân C, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/14922802/

27 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress