Được rồi, tôi đã được hỏi câu hỏi này trong một cuộc phỏng vấn hôm nay và nó như sau:Cây nhị phân có chứa cây khác không?
"Cho biết một cây nhị phân có trong cây nhị phân khác hay không (chứa ngụ ý cả về cấu trúc và giá trị của các nút)"
tôi nghĩ đến phương pháp sau đây:
Flatten cây lớn như:
{{{-}a{-}}b{{-}c{-}}}d{{{-}e{{-}f{-}}}g{{{-}h{-}}i{{-}j{-}}}}
(tôi đã thực sự viết mã cho điều này, {-}
ngụ ý có sản phẩm nào lef t hoặc phải phụ cây, mỗi cây con được kèm theo trong ngoặc {})
Bây giờ cho cây con nhỏ chúng ta cần phải phù hợp với mô hình này:
{{.*}e{.*}}g{{{.*}h{.*}}i{{.*}j{.*}}}
nơi {.*}
biểu thị một sản phẩm nào hay không trống cây con.
Vào thời điểm đó tôi nghĩ, đây sẽ là một mô hình regex tầm thường phù hợp với vấn đề trong java nhưng tôi bị giật. Thực ra bây giờ tôi cảm thấy, tôi vừa chuyển đổi vấn đề (tạo ra một con quái vật khác).
Có một lớp lót regex đơn giản nào phù hợp với các mẫu này không? Tôi hiểu có thể có các cách tiếp cận khác để giải quyết vấn đề này và điều này có thể không phải là cách tốt nhất. Tôi tự hỏi liệu điều này có thể giải quyết được không.
Không "trong cấu trúc" có nghĩa là "cùng một đối tượng" hoặc ".equals() [với cách triển khai thích hợp]? Ví dụ: nếu cây là một lá có giá trị" 4 "và cây hai cũng có một lá có giá trị" 4 "(nhưng đó là một đối tượng khác với cây một), cây hai có chứa cây một không? –
Tôi không thấy một yêu cầu trong câu hỏi được hỏi ban đầu để sử dụng cụm từ thông dụng. Đây có phải là một phần của câu hỏi phỏng vấn? Reg-exes thực sự có vẻ giống như công cụ sai hoàn toàn cho công việc này –
Cùng với @DarkFalcon tôi nghi ngờ rằng một thuật toán * phải * đi qua toàn bộ cả hai cây có thể không phải là những gì người phỏng vấn mong đợi. Sau tất cả, sau khi xem xét các nút của hai cây, bạn có thể xác định các subtrees nào có thể chồng lên nhau, và cái nào không, ngay cả khi bạn muốn sử dụng các bản trình bày chuỗi của cây, miễn là các dấu phân cách của bạn được cân bằng, không thể yo u làm điều này chỉ bằng cách kiểm tra xem chuỗi của cây có thể có là một chuỗi con của cây có thể chứa? –