Việc đi bộ trước, sau và theo thứ tự có ý nghĩa gì đối với cây n-ary?


8

Các phương thức truyền tải cây được giải thích trong bài viết Wikipedia này là đặt hàng trước, đặt hàng sau và theo thứ tự. Là những phương pháp giới hạn trong cây nhị phân? Thuật toán dường như được định nghĩa theo khía cạnh con trái và phải. Nếu nó có thể được sử dụng cho cây n-ary, làm thế nào?

Cây n-ary có 1 cha và n con tại bất kỳ nút nào. Trong đó n có thể là bất kỳ số nguyên nào cho mỗi nút.

Vui lòng sử dụng hình dưới đây để giải thích điều này, nếu bạn cần.

nhập mô tả hình ảnh ở đây

Câu trả lời:


9

Không, nó không giới hạn ở cây nhị phân. Vâng, đặt hàng trước và sau khi đặt hàng có thể được sử dụng cho cây -ary. Bạn chỉ cần thay thế các bước "Di chuyển cây con bên trái .... Đi qua cây con bên phải ...." trong bài viết trên Wikipedia bằng "Đối với mỗi đứa trẻ: đi qua cây con bắt nguồn từ đứa trẻ đó bằng cách gọi đệ quy hàm traverse". Chúng tôi giả định rằng vòng lặp for sẽ lặp qua các con theo thứ tự chúng được tìm thấy trong cấu trúc dữ liệu: thông thường, theo thứ tự từ trái sang phải, cho một sơ đồ như bạn đã hiển thị.n

Trong thực tế, điều này đã được mô tả trong bài viết Wikipedia trên duyệt cây: xem https://en.wikipedia.org/wiki/Tree_traversal#Generic_tree , trong đó mô tả một cách chính xác làm thế nào để khái quát này để cây -ary. Truyền tải trước đơn đặt hàng là một trong đó hoạt động đặt hàng trước là "Hiển thị nút hiện tại" và hoạt động sau đơn hàng là "Không làm gì". Truyền tải sau đơn đặt hàng là một trong đó hoạt động đặt hàng trước là "Không làm gì" và hoạt động sau đơn hàng là "Hiển thị nút hiện tại".n

Theo thứ tự traversal là một trường hợp đặc biệt. Nó có lẽ chỉ có ý nghĩa cho cây nhị phân. Trong khi có một số cách khác nhau có thể là người ta có thể xác định trong trật tự traversal cho cây -ary, mỗi người trong số những người cảm thấy một chút kỳ lạ và không tự nhiên và có lẽ không phải là terribly hữu ích trong thực tế. Vì vậy, có lẽ tốt nhất để nghĩ về giao dịch theo thứ tự là đặc trưng cho cây nhị phân; nếu bạn muốn làm một cái gì đó giống như traversal trong trật tự cho một cây -ary, bạn sẽ cần phải quyết định chính xác những gì bạn có nghĩa là bằng cách đó, như không có ý nghĩa tiêu chuẩn cho điều đó.nn


1
Cũng đáng chú ý là một trong những loại traversal mà không làm việc cho cây -ary là inorder; không có ý nghĩa tương đương với truyền tải inorder cho một nút có số lượng con lẻ. n
Adam R. Nelson

@DW Điều gì về in-oder? Bạn có thể vui lòng bao gồm điều đó trong câu trả lời của bạn quá?
Renae Lider

@ AdamR.Nelson Nó hoạt động như thế nào đối với một số chẵn không phải là hai? Đối với nhị phân, nó là Left-Root-Right. Tôi không biết nó sẽ hoạt động như thế nào, giả sử, một phần tư.
Renae Lider

@RenaeLider Cho trẻ em tên A, B, C và D (từ trái sang phải), bạn có thể làm một cái gì đó tương tự như sắp xếp theo thứ tự của một tứ giác bằng cách đi ngang qua AB-Root-CD. Nhưng tôi không nghĩ có bất kỳ ứng dụng hữu ích nào về việc này.
Adam R. Nelson

2
@ AdamR.Nelson Bạn có thể định nghĩa theo thứ tự cho trường hợp chung bằng cách nói rằng bạn đến thăm cha mẹ sau khi sinh con đầu lòng, sau đó đến những đứa trẻ khác. Có thể không có ý nghĩa lắm, nhưng có thể.
Raphael

0

Có nhiều cấu trúc dữ liệu kỳ lạ được sử dụng trên toàn CS với nhiều biến thể. Có một số câu hỏi gần đây tương tự (hiện đã bị xóa) về việc đi ngang qua các cây n-ary theo cách được sắp xếp theo thứ tự overexchange. Dường như hầu hết hoặc nhiều cây n-ary trong tài liệu nghiên cứu có xu hướng không được đặt hàng. Tuy nhiên, như một trường hợp thay thế POV / ngoại lệ / "cạnh" trên câu trả lời chi tiết khác, có những trường hợp cây n-ary được đặt hàng không "kỳ quặc và không tự nhiên và có lẽ không hữu ích lắm trong thực tế". Đây là một ref; có thể có nhiều trường hợp khác, mặc dù có thể chúng không được sử dụng rộng rãi.

[1] n-ary đặt mua cây / P Mateti 7140 ghi chú khóa học


Cách khác để nghĩ về các cây n-ary được đặt hàng chỉ đơn giản là các cạnh được dán nhãn và có thứ tự truy cập vào thuật toán trên đường ngang.
vzn

Không rõ ràng về thủ tục chèn / cập nhật của cây n-ary. Bạn có thể chia sẻ mã?
trao đổi quá mức
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.