Tại sao chiều cao tối thiểu của cây nhị phân ?


10

Trong lớp Java của tôi, chúng tôi đang tìm hiểu về sự phức tạp của các loại bộ sưu tập khác nhau.

Chúng tôi sẽ sớm thảo luận về cây nhị phân, mà tôi đã đọc lên. Cuốn sách nói rằng chiều cao tối thiểu của cây nhị phân là , nhưng không đưa ra lời giải thích thêm.đăng nhập2(n+1)-1

Ai đó có thể giải thích tại sao?


Tôi giải thích nó ở đây stackoverflow.com/a/13093274/550393
2cupsOfTech

Câu trả lời:


11

Cây nhị phân có 1 hoặc 2 con tại các nút không lá và 0 nút tại các nút lá. Để có nút trong một cây và chúng ta phải sắp xếp chúng theo cách mà chúng vẫn tạo thành cây nhị phân hợp lệ.n

Không cần chứng minh, tôi nói rằng để tối đa hóa chiều cao, các nút đã cho phải được sắp xếp tuyến tính, tức là mỗi nút không có lá chỉ nên có một con:

                              O 1
                              |
                              O 2
                              |
                              O 3
                              |
                              O 4
                              |
                              O 5
                              |
                              O 6
                              |
                              O 7
                              |
                              O 8

Ở đây, công thức tính toán quan hệ chiều cao theo số lượng nút là đơn giản. Nếu là chiều cao của cây thì .h = n - 1hh= =n-1

Bây giờ, nếu chúng ta cố gắng xây dựng một cây nhị phân gồm nút có chiều cao tối thiểu (luôn có thể rút gọn thành cây nhị phân hoàn chỉnh), chúng ta phải đóng gói càng nhiều nút càng tốt ở cấp trên, trước khi chuyển sang cấp độ tiếp theo. Vì vậy, cây có dạng cây sau:n

                              O
                              |1
                              |
                       O------+-----O
                       |2           |3
                       |            |
                   O---+---O    O---+----O
                   |4      |5    6        7
                   |       |
               O---+--O    O
                8      9    10

Chúng ta hãy bắt đầu với một trường hợp cụ thể, .n= =2m-1

Chúng tôi biết rằng,

20+21+22+...+2m-1= =2m-1

Ngoài ra, thật dễ dàng để chứng minh rằng, một cấp độ có thể có tối đa nút trong đó.2 tôiTôi2Tôi

Sử dụng kết quả này trong tổng số trên, chúng tôi thấy rằng với mỗi cấp , từ đến , tồn tại một thuật ngữ tương ứng trong việc mở rộng . Điều này ngụ ý rằng một cây nhị phân hoàn chỉnh nút được lấp đầy hoàn toàn và có chiều cao, , trong đó chiều cao của cây nhị phân hoàn chỉnh với nút.0 m 2 i - 1 2 m - 1 2 m - 1 h ( 2 m - 1 ) = m - 1 h ( n ) = nTôi0m2Tôi-12m-12m-1h(2m-1)= =m-1h(n)= =n

Sử dụng kết quả này, , vì cây có nút được lấp đầy hoàn toàn và do đó, một cây có nút phải chứa thêm nút phụ ở cấp độ tiếp theo , tăng chiều cao thêm 1 từ lên .2 m - 1 ( 2 m - 1 ) + 1 = 2 m m m - 1 mh(2m)= =m2m-1(2m-1)+1= =2mmm-1m

Cho đến bây giờ chúng tôi đã chứng minh, cũng như,h ( 2 m + 1 ) = m + 1 h ( 2 m + 1 - 1 ) = m

h(2m)= =m,
h(2m+1)= =m+1
h(2m+1-1)= =m

Do đó, m h ( n ) < m + 1nZ,2mn<2m+1

mh(n)<m+1

Nhưng, lấy nhật ký (cơ sở 2) ở cả hai bên, m = log 2 ( n )

mđăng nhập2(n)<m+1
m= =đăng nhập2(n)

Do đó,h ( n ) = m = log 2 ( n ) n,n[2m,2m+1)

h(n)= =m= =đăng nhập2(n)

Và chúng ta có thể khái quát kết quả này bằng cách sử dụng quy nạp.nZ

PS: Cuốn sách nêu chiều cao của cây nhị phân hoàn chỉnh là không hợp lệ cho tất cả vì sẽ cung cấp các giá trị không tách rời cho hầu hết các số nguyên (nghĩa là cho tất cả nhưng hoàn hảo cây nhị phân), nhưng chiều cao của cây hoàn toàn không thể thiếu.n log 2 ( n ) nđăng nhập2(n+1)-1nđăng nhập2(n)n


18

n

41+12+122+12223

điểm giao= =1+2+22+23+...+2chiều sâu= =Σk= =0chiều sâu2k= =1-2chiều sâu+11-2.

điểm giao= =2chiều sâu+1-1,
điểm giao+1= =2chiều sâu+1đăng nhập2(điểm giao+1)= =đăng nhập2(2chiều sâu+1)= =chiều sâu+1đăng nhập2(điểm giao+1)-1= =chiều sâu.

4

Để giữ chiều cao tối thiểu, dễ dàng nhận thấy rằng chúng ta cần phải điền vào tất cả các cấp trừ có thể là cuối cùng. Tại sao? mặt khác, chúng ta chỉ có thể di chuyển lên các nút cấp cuối cùng vào các vị trí trống ở các cấp cao hơn.

Bây giờ, hãy tưởng tượng rằng tôi có một số lượng đậu không xác định và tôi cung cấp cho bạn một hạt tại một thời điểm và yêu cầu bạn xây dựng một cây nhị phân với chiều cao tối thiểu có thể. Tôi có thể hết đậu vào lúc bạn hoàn thành cấp độ cuối cùng hoặc ít nhất là có một hạt đậu ở cấp độ cuối cùng. Hãy để chúng tôi nói, bạn có chiều cao cây h của bạn tại thời điểm này.

20+21+22+23++2h= =2h+1-1n.
h= =lg(n+1)-1.
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.