2011-02-10 40 views
19

Độ phức tạp về thời gian đi qua của cây là gì, tôi chắc chắn nó phải rõ ràng nhưng bộ não nghèo của tôi không thể hoạt động ngay bây giờ.Độ phức tạp của thời gian đi qua cây là gì?

+3

Đó là nghệ thuật tuyến tính của lập trình Vol 1 trang 326 – new299

+0

Đó có phải là nghệ thuật lập trình của Knuth không? Tôi đang cố gắng để tìm thấy điều này để cung cấp cho một người bạn một ví dụ tốt cho một cây n-ary đó là tuyến tính. – Nicholas

+0

yes "Nghệ thuật lập trình máy tính" của Knuth – new299

Trả lời

20

Nó phụ thuộc vào loại truyền tải bạn đang thực hiện và thuật toán, nhưng thông thường nó sẽ là O (n) trong đó n là tổng số nút trong cây. Việc thực hiện đệ quy chuẩn về chiều sâu đầu tiên truyền tải, sẽ tiêu thụ bộ nhớ (trên stack) theo thứ tự mức sâu nhất, mà trên một cây cân bằng nó sẽ là log (n).

+0

Điều này đúng với cây n-ary? Tôi có một cấu trúc dữ liệu là một cây có độ sâu tối đa 4 và đi qua nó, bạn tôi đang sử dụng 3 cho vòng lặp, và nói thuật toán của anh ta chạy trong thời gian 'O (n^3)', nhưng tôi tin nó đang chạy trong ' n' thời gian, 'n' là tổng số nút trong cây – Nicholas

+4

@Nocholas, bạn là chính xác và bạn của bạn là sai. Nó là O (n). – Uri

1

Nó sẽ không chỉ là n cho một cây có các nút n?

Bạn truy cập từng lần nghỉ một lần, phải không? Vì vậy, tôi muốn nói nó là tuyến tính.

+0

Tôi đoán nó phải là cây có "n nút" và không phải là "n lá". – aamadmi

+0

Bạn đúng, sai terminoligy :) – Nanne

+0

@Nanne Với thuật toán đúng nó thực sự là một phức tạp tuyến tính trong thời gian (truy cập mỗi nút một lần), nhưng nó vẫn có thể không có một sự phức tạp tuyến tính trong không gian. Giống như sử dụng ngăn xếp. – Tim

Các vấn đề liên quan