Sự khác biệt giữa “Cây nhị phân hoàn chỉnh”, “cây nhị phân nghiêm ngặt”, “Cây nhị phân đầy đủ”?


80

Tôi nhầm lẫn về thuật ngữ của những cây dưới đây, tôi đang nghiên cứu về Cây, và tôi không thể phân biệt được giữa những cây này:

a) Cây nhị phân hoàn chỉnh

b) Cây nhị phân nghiêm ngặt

c) Cây nhị phân đầy đủ

Xin hãy giúp tôi để phân biệt giữa những cây này. Khi nào và ở đâu những cây này được sử dụng trong Cấu trúc dữ liệu?


2
Liệu en.wikipedia.org/wiki/Binary_tree#Types_of_binary_trees không trả lời câu hỏi của bạn?
rodion

7
không có nó không, rất nhiều sự nhầm lẫn giữa các
kTiwari

1
Nghiêm ngặt Binary Tree: Mỗi nút có thể có 2 trẻ em hoặc không có các nút ở tất cả
vikkyhacks

Câu trả lời:


73

Wikipedia mang lại

Cây nhị phân đầy đủ (đôi khi cây nhị phân thích hợp hoặc cây 2 cây hoặc cây nhị phân nghiêm ngặt) là cây trong đó mỗi nút không phải các lá đều có hai nút con.

Vì vậy, bạn không có nút nào chỉ có 1 con. Có vẻ giống như cây nhị phân nghiêm ngặt.

Đây là hình ảnh của cây nhị phân đầy đủ / nghiêm ngặt, từ google:

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

Cây nhị phân hoàn chỉnh là cây nhị phân trong đó mọi cấp, ngoại trừ cấp có thể là cấp cuối cùng, được lấp đầy hoàn toàn và tất cả các nút ở bên trái càng xa càng tốt.

Nó dường như có nghĩa là một cái cây cân bằng.

Đây là hình ảnh của một cây nhị phân hoàn chỉnh, từ google, phần cây đầy đủ của hình ảnh là tiền thưởng.

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


34
Ví dụ về cây hoàn chỉnh của bạn cũng đáp ứng các tiêu chí của một cây nhị phân đầy đủ nên sự khác biệt rõ ràng là bị mờ, theo ý kiến ​​của tôi, bạn có thể muốn đưa ra một ví dụ về một cây hoàn chỉnh không phải là một cây nhị phân đầy đủ và ngược lại, điều đó sẽ làm cho câu trả lời hoàn thành :)
0decimal0

1
Có một sự khác biệt giữa cây nhị phân đầy đủ và cây nhị phân nghiêm ngặt. Tham khảo câu trả lời: stackoverflow.com/a/32064101/5237727
Saurabh Bhatia

2
Ngoài ra, trong khi tất cả các cây hoàn chỉnh là cây cân đối, tất cả các cây cân bằng không nhất thiết phải là cây hoàn chỉnh.
sfarbota

1
Điều gì có nghĩa là mọi cấp độ đều được lấp đầy?
lolololol ol

2
@lololololol điều đó có nghĩa là tất cả các nút có thể có trong cấp độ đó đều có mặt.
Sam Tôi nói Hãy phục hồi Monica

87

Cây hoàn hảo:

       x
     /   \
    /     \
   x       x
  / \     / \
 x   x   x   x
/ \ / \ / \ / \
x x x x x x x x

Cây hoàn chỉnh:

       x
     /   \
    /     \
   x       x
  / \     / \
 x   x   x   x
/ \ /
x x x

Cây nghiêm ngặt / đầy đủ:

       x
     /   \
    /     \
   x       x
  / \ 
 x   x 
    / \
    x x 

4
Bởi cây nhị phân hoàn hảo, bạn có nghĩa là cây nhị phân đầy đủ do OP giới thiệu?
RBT

3
Cây nhị phân hoàn hảo là cây nhị phân nghiêm ngặt / đầy đủ cũng như cây nhị phân hoàn chỉnh nhưng ngược lại có thể không phải lúc nào cũng đúng.
neo

51

Có một sự khác biệt giữa CÂY TIỀN LIỆT và ĐẦY ĐỦ.

1) CÂY BINARY ĐẦY ĐỦ: Cây nhị phân có chiều cao h chứa chính xác (2 ^ h) -1 phần tử được gọi là cây nhị phân đầy đủ . (Tham khảo: Trang 427, Cấu trúc dữ liệu, Thuật toán và Ứng dụng trong C ++ [Nhà xuất bản Đại học], Ấn bản thứ hai của Sartaj Sahni).

hay nói cách khác

Trong CÂY BINARY ĐẦY ĐỦ mỗi nút có đúng 0 hoặc 2 nút con và tất cả các nút lá đều ở cùng một mức.

Ví dụ: Sau đây là CÂY TIỀN LIỆT ĐẦY ĐỦ:

          18
       /      \   
     15       30    
    /  \     /   \   
  40    50  100  40 

2) CÂY BINARY CẠNH TRANH: Mỗi nút có đúng 0 hoặc 2 nút con.

Ví dụ: Sau đây là CÂY BINARY CẠNH TRANH:

         18
       /     \   
     15       30    
    /  \          
  40    50

Tôi nghĩ rằng không có gì nhầm lẫn trong định nghĩa của Cây nhị phân hoàn chỉnh, vẫn để tính đầy đủ của bài đăng, tôi muốn cho biết Cây nhị phân hoàn chỉnh là gì.

3) HOÀN THÀNH CÂY BINARY CÂY: Một cây nhị phân là hoàn chỉnh Cây nhị phân nếu tất cả các cấp được lấp đầy hoàn toàn ngoại trừ cấp độ cuối cùng và cấp độ cuối cùng có tất cả các phím còn lại càng tốt.

Ví dụ: Sau đây là CÂY TIỀN LIỆT HOÀN THÀNH:

           18
       /       \  
     15         30  
    /  \        /  \
  40    50    100   40
 /  \   /
8   7  9 

Lưu ý: Sau đây cũng là một cây nhị phân hoàn chỉnh:

         18
       /     \   
     15       30    
    /  \     /   \   
  40    50  100  40 

Bạn có thể cung cấp một nguồn cho định nghĩa cây nhị phân đầy đủ không? Nó mâu thuẫn với một trên Wikipedia được lấy từ NIST .
Calvin Li

@CalvinLi Nguồn được đề cập trong định nghĩa của FULL BINARY TREE. Dưới đây là một liên kết của pdf (pg 447 của pdf) - o6ucs.files.wordpress.com/2012/10/...
Saurabh Bhatia

@SaurabhBhatia, đại diện cuối cùng cũng đúng với cây nhị phân đầy đủ. Hãy sửa cho tôi nếu tôi sai. Làm thế nào có thể là một đại diện đúng cho các giống khác nhau?
Rose

10

Disclaimer- Nguồn chính của một số định nghĩa là wikipedia, mọi đề xuất để cải thiện câu trả lời của tôi đều được hoan nghênh.

Mặc dù bài đăng này có một câu trả lời được chấp nhận và là một câu trả lời tốt, tôi vẫn còn nhầm lẫn và muốn thêm một số giải thích rõ hơn về sự khác biệt giữa các điều khoản này.

(1) CÂY BINARY ĐẦY ĐỦ- Cây nhị phân đầy đủ là một cây nhị phân trong đó mỗi nút không phải các lá đều có hai nút con, đây còn được gọi là cây nhị phân nghiêm ngặt .

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

Hai ở trên là các ví dụ về cây nhị phân đầy đủ hoặc nghiêm ngặt.

(2) HOÀN THÀNH CÂY BINARY - Hiện nay, định nghĩa về cây nhị phân hoàn chỉnh còn khá mơ hồ, nó nêu rõ: - Cây nhị phân hoàn chỉnh là cây nhị phân trong đó mọi cấp, ngoại trừ cấp cuối cùng , được lấp đầy hoàn toàn, và tất cả các nút như xa trái nhất có thể. Nó có thể có từ 1 đến 2 giờ nút, càng xa càng tốt, ở cấp cuối cùng h

Chú ý các dòng in nghiêng.

Sự mơ hồ nằm ở các dòng in nghiêng, "ngoại trừ có thể là cuối cùng" có nghĩa là mức cuối cùng cũng có thể được lấp đầy hoàn toàn, tức là không phải lúc nào ngoại lệ này cũng cần được thỏa mãn. Nếu ngoại lệ không giữ thì nó giống hệt như hình ảnh thứ hai tôi đã đăng, cũng có thể được gọi là cây nhị phân hoàn hảo . Vì vậy, một cây nhị phân hoàn hảo cũng đầy đủ và hoàn chỉnh nhưng không phải ngược lại, điều này sẽ rõ ràng hơn bởi một định nghĩa nữa mà tôi cần nêu rõ:

ALMOST COMPLETE BINARY TREE- Khi ngoại lệ trong định nghĩa của cây nhị phân hoàn chỉnh được giữ nguyên thì nó được gọi là cây nhị phân gần như hoàn chỉnh hoặc cây nhị phân gần như hoàn chỉnh. Bản thân nó chỉ là một loại cây nhị phân hoàn chỉnh, nhưng cần phải có một định nghĩa riêng để làm cho nó rõ ràng hơn.

Vì vậy, một cây nhị phân gần như hoàn chỉnh sẽ giống như thế này, bạn có thể thấy trong hình ảnh các nút ở càng xa bên trái càng tốt nên nó giống như một tập hợp con của cây nhị phân hoàn chỉnh, nói một cách nghiêm túc hơn mọi cây nhị phân gần như hoàn chỉnh đều là một nhị phân hoàn chỉnh. cây nhưng không phải ngược lại. :

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


6

Kết luận từ các câu trả lời trên, Đây là sự khác biệt chính xác giữa cây nhị phân đầy đủ / nghiêm ngặt, hoàn chỉnh và hoàn hảo

  1. Cây nhị phân đầy đủ / chặt chẽ : - Mọi nút trừ các nút lá đều có hai nút con

  2. Cây nhị phân hoàn chỉnh : - Mọi cấp ngoại trừ cấp cuối cùng được lấp đầy hoàn toàn và tất cả các nút đều được căn trái.

  3. Cây nhị phân hoàn hảo : - Mọi nút ngoại trừ các nút lá đều có hai nút con và mọi cấp (cấp cuối cùng) đều được lấp đầy hoàn toàn.


2

Hãy xem xét một cây nhị phân có các nút được vẽ theo kiểu cây. Bây giờ bắt đầu đánh số các nút từ trên xuống dưới và từ trái sang phải. Một cây hoàn chỉnh có các đặc tính sau:

Nếu n có con thì tất cả các nút được đánh số nhỏ hơn n đều có hai con.

Nếu n có một nút con thì nó phải là nút con bên trái và tất cả các nút nhỏ hơn n đều có hai nút con. Ngoài ra không có nút nào được đánh số lớn hơn n có nút con.

Nếu n không có nút con nào thì không có nút nào được đánh số lớn hơn n có nút con.

Một cây nhị phân hoàn chỉnh có thể được sử dụng để biểu diễn một đống. Nó có thể dễ dàng được biểu diễn trong bộ nhớ liền kề không có khoảng trống (nghĩa là tất cả các phần tử mảng được sử dụng để lưu cho bất kỳ khoảng trống nào có thể tồn tại ở cuối).


2

Cây nhị phân đầy đủ là một cây nhị phân hoàn chỉnh nhưng không thể thực hiện ngược lại, và nếu độ sâu của nhị phân là n thì không. của các nút trong cây nhị phân đầy đủ là (2 ^ n-1). Trong cây nhị phân không nhất thiết phải có hai nút con nhưng trong cây nhị phân đầy đủ, mọi nút đều không có hoặc hai nút con.


1
Bạn không thể nói chính xác rằng "không thể đảo ngược" trên thực tế, giả định này của bạn được xác nhận trong ví dụ về cây hoàn chỉnh trong câu trả lời được chấp nhận ... bạn nên nói rằng điều đó có thể có hoặc có thể không
0decimal0

1
nếu độ sâu của nhị phân là n thì không. của các nút trong cây nhị phân đầy đủ là (2 ^ n-1): nhưng định nghĩa cây nhị phân đầy đủ là cây mà mọi nút đều là một lá hoặc có hai con. Vì vậy, tối đa có thể không. của trẻ em là (2 ^ n-1) nhưng nó có thể ít hơn thế.
mrida

2

Để bắt đầu với những điều cơ bản, điều rất quan trọng là phải hiểu bản thân cây nhị phân để hiểu các loại khác nhau của nó.

Cây là cây nhị phân nếu và chỉ khi: -

- Nó có một nút gốc, có thể không có bất kỳ nút con nào (0 nút con, cây NULL)

–Node quay có thể có 1 hoặc 2 nút con. Mỗi nút như vậy tạo thành cây số ít 

–Số nút con có thể là 0, 1, 2 ....... không quá 2

–Có một đường dẫn duy nhất từ ​​gốc đến mọi nút khác

Thí dụ :

        X
      /    \
     X      X
          /   \
         X     X

Đến với các thuật ngữ thắc mắc của bạn:

Cây nhị phân là một cây nhị phân hoàn chỉnh (có chiều cao h, chúng tôi lấy nút gốc là 0) nếu và chỉ khi: -

Mức 0 đến h-1 đại diện cho một cây nhị phân đầy đủ có chiều cao h-1

- Một hoặc nhiều nút ở mức h-1 có thể có 0 hoặc 1 nút con

Nếu j, k là các nút ở mức h-1, thì j có nhiều nút con hơn k nếu và chỉ khi j ở bên trái của k, tức là mức cuối cùng (h) có thể thiếu các nút lá, tuy nhiên các nút hiện tại phải được chuyển sang trái

Thí dụ :

                          X
                     /          \
                   /              \
                 /                  \
                X                    X
             /     \              /     \
           X       X             X       X
         /   \   /   \         /   \    /  \ 
        X    X   X   X        X    X    X   X 

Cây nhị phân là cây nhị phân hoàn toàn nếu và chỉ khi: -

Mỗi nút có đúng hai nút con hoặc không có nút nào

Thí dụ :

         X
       /   \
      X     X 
          /   \
         X      X
        / \    / \ 
       X   X  X   X 

Cây nhị phân là một cây nhị phân đầy đủ nếu và chỉ khi: -

Mỗi nút không phải lá có đúng hai nút con

Tất cả các nút lá đều ở cùng một mức

Thí dụ :

                          X
                     /          \
                   /              \
                 /                  \
                X                    X
             /     \              /     \
           X       X             X       X
         /   \   /   \         /   \    /  \ 
        X    X   X   X        X    X    X   X 
      /  \  / \ / \ / \      / \  / \  / \ / \ 
     X   X X  X X X X X     X  X  X X  X X X X 

Bạn cũng nên biết cây nhị phân hoàn hảo là gì?

Cây nhị phân là cây nhị phân hoàn hảo nếu và chỉ khi: -

- là một cây nhị phân đầy đủ

- Tất cả các nút lá đều cùng cấp

Thí dụ :

                          X
                     /          \
                   /              \
                 /                  \
                X                    X
             /     \              /     \
           X       X             X       X
         /   \   /   \         /   \    /  \ 
        X    X   X   X        X    X    X   X 
      /  \  / \ / \ / \      / \  / \  / \ / \ 
     X   X X  X X X X X     X  X  X X  X X X X 

Tôi xin lỗi vì tôi không thể đăng hình ảnh vì tôi không có 10 danh tiếng. Hy vọng điều này sẽ giúp bạn và những người khác!


2

Trong kinh nghiệm hạn chế của tôi với cây nhị phân, tôi nghĩ:

  1. Cây nhị phân nghiêm ngặt : Mọi nút ngoại trừ các nút lá đều có hai nút con hoặc chỉ có một nút gốc.
  2. Cây nhị phân đầy đủ : Một cây nhị phân của H đúng (hoặc chính xác) chứa 2 ^ (H + 1) -1 nút , rõ ràng là cấp nào có nhiều nút nhất. Hay nói ngắn gọn là một cây nhị phân nghiêm ngặt mà tất cả các nút lá đều ở cùng một mức.
  3. Cây nhị phân hoàn chỉnh : Nó là cây nhị phân trong đó mọi cấp, ngoại trừ cấp cuối cùng, được lấp đầy hoàn toàn và tất cả các nút ở bên trái càng xa càng tốt.

1
Định nghĩa của bạn cho một cây nhị phân đầy đủ là không chính xác, đó là định nghĩa của một cây nhị phân hoàn hảo. Một cây nhị phân đầy đủ đồng nghĩa với một cây nhị phân nghiêm ngặt. (nguồn: xem cây Nghiêm nhị phân: faculty.cs.niu.edu/~mcmahon/CS241/Notes/bintree.html ) (nguồn: xem cây nhị phân hoàn hảo: slideshare.net/ajaykumarc137151/... )
keego

1
ôi trời ơi, vừa rồi tôi đang bối rối, tôi sẽ đảm bảo điều này. Cảm ơn nhiều.
BertKing

1
Không sao đâu :) Xem câu trả lời của @Lotus bên dưới , anh ấy đã đóng đinh nó. Tôi chỉ đề xuất các chỉnh sửa cho câu trả lời của bạn để phản ánh điều này.
Keego

1

Chúng ta hãy xem xét một cây nhị phân có chiều cao 'h'. Cây nhị phân được gọi là cây nhị phân hoàn chỉnh nếu tất cả các lá đều có ở độ cao 'h' hoặc 'h-1' mà không có bất kỳ số nào bị thiếu trong chuỗi.

                   1
                 /   \
              2       3
            /    \         
         4        5

Nó là một cây nhị phân hoàn chỉnh.

                   1
                 /   \
              2       3
            /        /    
         4         6    

Nó không phải là một cây nhị phân hoàn chỉnh vì nút của số 5 bị thiếu trong chuỗi


0

cây nhị phân đầy đủ đầy nếu mọi nút có 0 hoặc 2 nút con. trong hệ nhị phân đầy đủ số nút lá là số nút bên trong cộng với 1 L = l + 1


0

Cây nhị phân hoàn chỉnh: Tất cả các cấp đều được lấp đầy ngoại trừ cấp thấp nhất và một điều chính là tất cả các yếu tố lá phải còn lại con. Cây nhị phân nghiêm ngặt: Trong cây này, mọi nút không phải lá không có con tức là không trái cũng không phải. Cây nhị phân đầy đủ: Mọi Node đều có con 0 hoặc Hai con (không bao giờ có con duy nhất).


> Trong cây này mỗi nút lá không đã không có con tức là không để lại cũng không đúng nốt Non-lá phải có ít nhất một trẻ em, ngược lại nó là nút lá
nkrivenko
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.