Mặc dù việc sử dụng không gian của TreeData vẻ như một phần nổi bật của câu hỏi của bạn, có lẽ bạn có thể quan tâm trong một thuật toán thay thế mà không cần TreeData ở tất cả, loại bỏ lo ngại của bạn về không gian. Tôi cho rằng lý do cho TreeData là mang một giá trị boolean ngoài chiều cao. Lưu ý rằng giá trị của chiều cao là hoàn toàn không thích hợp khi boolean là sai. Cũng lưu ý rằng chiều cao luôn là> = 0. Dựa trên logic này, bạn có thể cấu trúc thuật toán hiện tại của bạn: Đơn giản chỉ cần tìm kiếm chiều cao Khi một chi nhánh được tìm thấy là không cân bằng, trả lại một giá trị tiêu cực Thay vì kiểm tra một giá trị boolean, kiểm tra xem chiều cao trở lại là tiêu cực Taking thuật toán của bạn, và thay thế các loại và và kiểm tra boolean, việc thực hiện trở thành này, và nó vẫn vượt qua tất cả các bài kiểm tra đơn vị của bạn, mà không cần sử dụng đối tượng TreeData:
đang được dịch, vui lòng đợi..