Php mảng phẳng thành cây
Gần đây tôi đã phải đối mặt với một thử thách lập trình khiến tôi gần như bị hỏng não. Tôi cần tạo một hàm có thể phát nổ bất kỳ mảng một chiều nào thành cấu trúc cây hoàn chỉnh, dựa trên các dấu phân cách được tìm thấy trong các phím của nó. Phần khó khăn là kích thước của cây có thể là vô hạn. Tôi đã gọi hàm. Ví dụ thư mụcỞ đây tôi sẽ đưa ra một ví dụ về hàm
Cái nào sẽ trả lại một cái gì đó như
Bây giờ nếu chúng ta muốn chuyển đổi danh sách này thành cấu trúc cây với mỗi thư mục là một nút lồng nhau, một con của thư mục khác, tất cả những gì chúng ta phải làm là chạy
Và lệnh duy nhất đó sẽ mang lại kết quả hoàn toàn tuyệt vời
Ồ. Vì vậy, điều này sẽ giúp dễ dàng bố trí trực quan cấu trúc cây của thư mục 1. Nhưng hãy nhớ rằng đây chỉ là một ví dụ. Bây giờ, hàm sẽ phát nổ trên ký tự '/', nhưng bạn có thể sử dụng bất kỳ dấu phân cách nào để phát nổ một mảng một chiều thành Cây. Vậy chức năng explodeTree này hoạt động như thế nào?Chức năng. phát nổTree()Cảm ơn Lachlan Donald và Takkie đã đóng góp cho hàm this()
Tôi đoán là lập luận đầu tiên của 3 rõ ràng. Nhưng còn tham số thứ 3 thì sao. 4?Đối số cơ bảnTrong ví dụ đầu tiên, bạn thấy rằng chỉ có các lá (các nút dưới cùng không có nút con nào) duy trì các giá trị ban đầu của chúng (trong trường hợp này là đường dẫn tệp). Nếu bạn muốn các nút cao hơn (cha mẹ) cũng duy trì các giá trị của chúng, bạn sẽ phải yêu cầu ________số 8_______ Và sau đó 7. Như thế này
Xem những gì xảy ra? . Một nửa nút cho giá trị ban đầu của nút gốc. Giá trị. 8 hiện đã được lưu, nếu không có baseval, giá trị này sẽ bị mất vì không có nơi lưu trữ. Điều đó có thể có íchVậy là bạn đã có một cái cây. Giờ thì sao?Các cây có mức nút không giới hạn yêu cầu các hàm đệ quy có thể duyệt qua toàn bộ cấu trúc. Các hàm đệ quy là các hàm tự gọi mỗi khi chúng tìm thấy nhiều mục hơn để xử lý. Đây là một để bố trí các thư mục
Và điều này sẽ xuất ra
Nếu tôi bỏ qua một hàm PHP tiêu chuẩn đã có thể thực hiện việc này hoặc bạn có những cải tiến/ý tưởng khác, hãy để lại nhận xét |