Sự khác biệt giữa chiều sâu cây và chiều cao là gì?


262

Đây là một câu hỏi đơn giản từ lý thuyết thuật toán.
Sự khác biệt giữa chúng là trong một trường hợp, bạn đếm số nút và số cạnh khác trên đường đi ngắn nhất giữa nút gốc và nút cụ thể.
Cái nào là cái nào?


78
Mẹo: để tránh nhầm lẫn giữa các thuật ngữ: 1. Chiều cao: Hãy tưởng tượng việc đo chiều cao của một người, chúng tôi thực hiện từ ngón chân đến đầu (lá đến gốc). 2. Độ sâu: Hãy tưởng tượng việc đo độ sâu của biển, chúng ta thực hiện từ bề mặt trái đất đến đáy đại dương (từ gốc đến lá).
Yesh

@Yesh Đây là một sự tương tự tuyệt vời.
Nhân vật đặc biệt

1
Để thêm vào sự tương tự tuyệt vời của @Yesh: đối với một số nút bên trong ở giữa cây, độ sâu của nó là bao nhiêu cấp độ bên dưới nút gốc và chiều cao của nó là mức nào so với nút con dưới cùng của nó.
Thomas Nguyễn

Câu trả lời:


664

Tôi đã học được rằng độ sâu và chiều cao là thuộc tính của một nút :

  • Độ sâu của một nút là số cạnh từ nút đến nút gốc của cây.
    Một nút gốc sẽ có độ sâu bằng 0.

  • Các chiều cao của một nút là số cạnh trên con đường dài nhất từ nút đến một chiếc lá.
    Một nút lá sẽ có chiều cao bằng 0.

Thuộc tính của cây :

  • Các chiều cao của một cây sẽ là chiều cao của nút gốc của nó,
    hoặc tương đương, độ sâu của nút sâu nhất của nó.

  • Các đường kính (hoặc chiều rộng ) của một cây là số nút trên con đường dài nhất giữa bất kỳ hai nút lá. Cây bên dưới có đường kính 6 nút.

Một cây, với chiều cao và chiều sâu của mỗi nút


21
+1 sắp thêm trích dẫn có cùng nội dung từ đây: en.wikipedia.org/wiki/Tree_%28data_structure%29
Péter Török

2
điều đó có nghĩa là chiều cao == độ sâu tối đa
roottraveller

6
@rkm_Hodor: Có, chiều cao của cây luôn bằng độ sâu của nút sâu nhất.
Daniel AA Pelsmaeker

1
Bạn có thể vui lòng trích dẫn một nguồn cho tuyên bố của bạn rằng đường kính của cây đếm các nút thay vì các cạnh không? Điều này mâu thuẫn với định nghĩa thông thường về đường kính của đồ thị (xem ví dụ en.wikipedia.org/wiki/Distance_(graph_theory) ) yêu cầu đường đi dài nhất.
j_random_hacker

1
@j_random_hacker Đó là vấn đề định nghĩa, hãy chọn một thứ hữu ích nhất cho bạn. Để lấy từ số đỉnh đến số cạnh, chỉ cần trừ 1. Tôi thích đếm số đỉnh, vì điều này dẫn đến một đồ thị chỉ có một nút có chiều rộng 1 và đồ thị trống có chiều rộng 0. mathworld. wolfram.com/GraphDiameter.html
Daniel AA Pelsmaeker

44

chiều cao và chiều sâu của cây bằng ...

nhưng chiều cao và chiều sâu của một nút không bằng nhau vì ...

chiều cao được tính bằng cách di chuyển từ nút đã cho đến lá sâu nhất có thể.

độ sâu được tính từ truyền tải từ gốc đến nút đã cho .....


4
"Chiều cao được tính bằng cách di chuyển từ lá đến nút đã cho" không đúng, lá phải là chiều sâu nhất trong số tất cả các lá của nút đã cho.
mightyWOZ

14

Theo Cormen et al. Giới thiệu về Thuật toán (Phụ lục B.5.3), độ sâu của nút X trong cây T được định nghĩa là độ dài của đường dẫn đơn giản (số cạnh) từ nút gốc của T đến X. Chiều cao của nút Y là số cạnh dài nhất con đường đơn giản đi xuống từ Y đến một chiếc lá. Chiều cao của cây được định nghĩa là chiều cao của nút gốc của nó.

Lưu ý rằng một đường dẫn đơn giản là một đường dẫn không có đỉnh lặp lại.

Chiều cao của cây bằng độ sâu tối đa của cây . Độ sâu của một nút và chiều cao của một nút không nhất thiết phải bằng nhau. Xem hình B.6 của phiên bản thứ 3 của Cormen et al. cho một minh họa của các khái niệm này.

Đôi khi tôi đã thấy các vấn đề yêu cầu một người đếm các nút (đỉnh) thay vì các cạnh, vì vậy hãy yêu cầu làm rõ nếu bạn không chắc chắn bạn nên đếm các nút hoặc cạnh trong khi kiểm tra hoặc phỏng vấn xin việc.


Có sự khác biệt nào trong việc đếm các nút và cạnh. Có vẻ là cả hai sẽ cho kết quả như nhau. Đúng nếu tôi đã sai lầm.
NĂNG LƯỢNG VÒNG

@jdhao làm thế nào độ sâu của root có thể là 2? Đó là 0 (nếu các cạnh được xem xét) hoặc 1 (nếu các nút được xem xét).
neowulf33

@ neowulf33, vâng, tôi sai lầm khủng khiếp. Độ sâu của nút gốc phải là 0. Tôi sẽ xóa nhận xét của mình để không gây nhầm lẫn cho mọi người.
jdhao

2

Trả lời đơn giản:
Độ sâu:
1. Cây : Số cạnh / cung từ nút gốc đến nút lá của cây được gọi là Độ sâu của Cây.
2. Nút : Số cạnh / cung từ nút gốc đến nút đó được gọi là Độ sâu của nút đó.


2

Một cách khác để hiểu các khái niệm đó là như sau: Độ sâu: Vẽ một đường ngang ở vị trí gốc và coi đường này là mặt đất. Vì vậy, độ sâu của gốc là 0 và tất cả các phần tử con của nó đều phát triển xuống để mỗi cấp độ của nút có độ sâu hiện tại + 1.

Chiều cao: Cùng một đường nằm ngang nhưng lần này vị trí mặt đất là các nút bên ngoài, là lá của cây và đếm ngược lên.


2

Tôi muốn thực hiện bài đăng này vì tôi là sinh viên CS chưa tốt nghiệp và ngày càng nhiều hơn chúng tôi sử dụng OpenDSA và các sách giáo khoa nguồn mở khác. Có vẻ như từ câu trả lời được xếp hạng hàng đầu rằng cách dạy chiều cao và chiều sâu đã thay đổi từ thế hệ này sang thế hệ khác và tôi đang đăng bài này để mọi người biết rằng sự khác biệt này tồn tại và hy vọng sẽ không gây ra lỗi trong bất kỳ các chương trình! Cảm ơn.

Từ sách Cấu trúc dữ liệu & Algos của OpenDSA :

Nếu n 1 , n 2 , ..., n k là một chuỗi các nút trong cây sao cho n i là cha của n i +1 cho 1 <= i <k, thì chuỗi này được gọi là đường dẫn từ n 1 đến n k . Độ dài của đường dẫn là k 1. Nếu có một đường dẫn từ nút R đến nút M, thì R là tổ tiên của M và M là hậu duệ của R. Do đó, tất cả các nút trong cây là hậu duệ của gốc cây, trong khi gốc là tổ tiên của tất cả các nút. Độ sâu của nút M trong cây là chiều dài của đường dẫn từ gốc của cây đến M. Chiều cao của cây nhiều hơn độ sâu của nút sâu nhất trong cây.Tất cả các nút có độ sâu d đều ở mức d trong cây. Rễ là nút duy nhất ở cấp 0 và độ sâu của nó là 0.

Hình 7.2.1

Hình 7.2.1: Cây nhị phân. Nút A là gốc. Các nút B và C là con của A. Các nút B và D cùng nhau tạo thành một cây con. Nút B có hai con: Con trái của nó là cây trống và con phải của nó là D. Nút A, C và E là tổ tiên của G. Nút D, E và F tạo thành cấp 2 của cây; nút A ở mức 0. Các cạnh từ A đến C đến E đến G tạo thành một đường dẫn có chiều dài 3. Các nút D, G, H và I là các lá. Các nút A, B, C, E và F là các nút bên trong. Độ sâu của I là 3. Chiều cao của cây này là 4.


Để biết giá trị của nó, định nghĩa tại liên kết này đã được thay đổi thành: "Độ sâu của nút M trong cây là chiều dài của đường dẫn từ gốc cây đến M. Chiều cao của cây là độ sâu của cây nút sâu nhất trong cây. "
kaya3
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.