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

java - xóa giá trị trong cây nhị phân

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 06:52:28 hai mươi bốn 4
mua khóa gpt4 Nike

Tôi có hàm xóa giá trị cây tìm kiếm nhị phân đang hoạt động nhẹ. Trường hợp duy nhất mà cách này không hiệu quả là nếu bạn cố xóa một root có hai con.

xóa boolean công khai (nút BinaryTreeNode, int i){
if (nút == null){
trả về sai;
} khác {
if (node.getKey() == i){
BinaryTreeNode gốc = new BinaryTreeNode(0, null, null);
parent.setLeftChild(root);
kết quả boolean = deleteHelper(i, node, parent);
root = parent.getLeftChild();
return result;
} khác {
trả về deleteHelper(i, node, null);
}
}
}

public boolean deleteHelper(int value, BinaryTreeNode curr, BinaryTreeNode parent){
if (giá trị <>
if (curr.getLeftChild() != null){
return deleteHelper(value, curr.getLeftChild(), curr);
} khác {
trả về sai;
}
} else if (giá trị > curr.getKey()){
if (curr.getRightChild() != null){
return deleteHelper(value,curr.getRightChild(),curr);
} khác {
trả về sai;
}
} khác {
if (curr.getRightChild() != null &&curr.getLeftChild() != null){
curr.setKey(findMin(curr.getRightChild()).getKey());
deleteHelper(curr.getKey(), curr.getRightChild(), curr);
} else if (parent.getLeftChild() == Curr){
parent.setLeftChild((curr.getLeftChild() != null)?curr.getLeftChild():curr.getRightChild());
} else if (parent.getRightChild() == Curr){
parent.setRightChild((curr.getLeftChild() != null)?curr.getLeftChild():curr.getRightChild());
}
trả về đúng sự thật;
}
}

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

Theo Wikipedia

Xóa nút có hai nút con: gọi nút N cần xóa. Đừng xóa N Thay vào đó, nút kế tiếp có thứ tự hoặc nút tiền nhiệm có thứ tự R được chọn. Sao chép giá trị của R sang N, sau đó gọi đệ quy xóa trên R cho đến khi đạt được một trong hai trường hợp đầu tiên. http://en.wikipedia.org/wiki/Binary_search_tree#Deletion

Bạn có thể thử các nút kế tiếp như sau:

  1. Lấy nút kế thừa (hiện tại) của nút bị xóa
  2. Kết nối cha mẹ hiện tại với người kế nhiệm
  3. Kết nối người kế nhiệm với con trái hiện tại

Để biết thêm chi tiết xin vui lòng kiểm tra liên kết này

Java, Phương pháp loại bỏ cây nhị phân

Về java - xóa giá trị trong cây nhị phân, 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/23164940/

hai mươi bốn 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