trích dẫn Wikipedia:Finding yếu tố cuối cùng của một đống nhị phân
Nó là hoàn toàn chấp nhận được để sử dụng một truyền thống cây nhị phân cấu trúc dữ liệu để thực hiện một đống nhị phân. Có một vấn đề với việc tìm kiếm các yếu tố liền kề vào mức độ cuối cùng trên đống nhị phân khi thêm một yếu tố có thể được giải quyết thuật toán ...
Bất kỳ ý tưởng về cách như vậy thuật toán có thể hoạt động?
Tôi không thể tìm thấy bất kỳ thông tin nào về vấn đề này, đối với hầu hết các đống nhị phân được triển khai bằng cách sử dụng mảng.
Bất kỳ trợ giúp đánh giá cao.
Gần đây, tôi đã đăng ký tài khoản OpenID và không thể chỉnh sửa bài đăng đầu tiên cũng như các câu trả lời nhận xét. Đó là lý do tại sao tôi trả lời qua câu trả lời này. Xin lỗi vì điều này.
trích dẫn Mitch Wheat:
@Yse: là câu hỏi của bạn "Làm thế nào để tìm yếu tố cuối cùng của một đống nhị phân"?
Vâng, đúng vậy. Hoặc để chính xác hơn, câu hỏi của tôi là: "Làm cách nào để tìm phần tử cuối cùng của một cụm nhị phân không dựa trên mảng nhị phân?".
trích dẫn Suppressingfire:
Có một số bối cảnh trong đó bạn hỏi câu hỏi này? (Ví dụ, là có một số vấn đề cụ thể bạn đang cố gắng giải quyết?)
Như đã trình bày ở trên, tôi muốn biết một cách tốt để "tìm ra yếu tố cuối cùng của một nhị phân không cho mảng dựa trên heap "cần thiết cho việc chèn và xóa các nút.
trích Roy:
Có vẻ như dễ hiểu nhất đối với tôi để chỉ cần sử dụng một nhị phân cấu trúc cây bình thường (sử dụng một pRoot và Node định nghĩa là [dữ liệu, pLeftChild, pRightChild]) và thêm hai con trỏ bổ sung (pInsertionNode và pLastNode). pInsertionNode và pLastNode sẽ được cập nhật trong suốt các chương trình con chèn và xóa để giữ chúng hiện tại khi dữ liệu thay đổi cấu trúc.Điều này cho O (1) truy cập vào cả hai chèn điểm và nút cuối cùng của cấu trúc.
Có, thao tác này sẽ hoạt động. Nếu tôi không nhầm, nó có thể là một chút khôn lanh để tìm nút chèn và nút cuối cùng, khi vị trí của họ thay đổi sang một cây con khác do xóa/chèn. Nhưng tôi sẽ thử.
trích dẫn Zach Scrivena:
Làm thế nào về thực hiện một chiều sâu-đầu tiên tìm kiếm ...
Vâng, đây sẽ là một cách tiếp cận tốt. Tôi cũng sẽ thử điều đó.
Tôi vẫn tự hỏi, nếu có cách "tính toán" vị trí của nút cuối cùng và điểm chèn. Chiều cao của một đống nhị phân với N nút có thể được tính toán bằng cách lấy nhật ký (của cơ số 2) của công suất nhỏ nhất của hai lớn hơn N. Có lẽ nó có thể tính toán số lượng các nút ở mức sâu nhất, quá. Sau đó, nó có thể có thể xác định làm thế nào heap đã được đi qua để đạt được điểm chèn hoặc nút để xóa.
@Yse: là câu hỏi của bạn "Làm thế nào để tìm phần tử cuối cùng của một đống nhị phân"? –
Sử dụng 2 đống, hoặc (tồi tệ hơn vì mất O (1) chèn avarage) một đống nhị phân và theo dõi lớn nhất và nhỏ nhất: http://stackoverflow.com/questions/7878622/can-we-use-binary-search -tree-to-simulate-heap-operation –