Cây nhị phân trong Python là gì?

Trong bài viết này, chúng ta đã khám phá chiến lược triển khai Cây nhị phân trong Ngôn ngữ lập trình Python với lời giải thích đầy đủ và các hoạt động khác nhau như duyệt, tìm kiếm và xóa

Mục lục

  1. Khái niệm cơ bản về cây nhị phân
  2. Triển khai bằng Python với Giải thích
  3. hoạt động ngang
  4. Hoạt động tìm kiếm
  5. Thao tác xóa
Khái niệm cơ bản về cây nhị phân

Cây nhị phân là gì?

Cây nhị phân là loại cấu trúc dữ liệu thừa kế đặc biệt được xác định bằng các nút. Về cơ bản, phiên bản mở rộng của danh sách liên kết. Đó là cấu trúc dữ liệu cây trong đó mỗi nút được phép có tối đa hai nút con, thường được gọi là Con trái và Con phải. Băm, định tuyến dữ liệu cho lưu lượng mạng, nén dữ liệu và cây tìm kiếm nhị phân là một số ứng dụng của nó

Dữ liệu, cây con trái và cây con phải là ba tính năng quan trọng trong cây nhị phân. Mỗi dữ liệu nằm trong ô Dữ liệu với con trỏ bên trái trỏ đến cây con bên trái tiếp theo và ô Dữ liệu bên phải với con trỏ bên phải trỏ đến tám cây con tiếp theo

**Một số thuật ngữ chính. - **

Nguồn gốc. - Nút trên cùng
Chiều cao. - Tổng số cạnh từ nút gốc đến nút cuối cùng [sâu nhất]
Lá cây. - Nút không có con
Độ sâu của một cái cây. Số cạnh từ nút của cây đến gốc là
Nút nội bộ. - Nút có ít nhất một nút con
Loại cây nhị phân

  1. Cây nhị phân hoàn hảo

Cây nhị phân với tất cả các nút bên trong [tất cả các nút trừ nút lá] có hai con và tất cả các nút lá có cùng độ sâu

  1. Cây nhị phân cân bằng

Mọi cây có chênh lệch tối đa giữa chiều cao cây con bên phải và bên trái là 1

3] Cây nhị phân hoàn chỉnh

Tất cả cây nhị phân trong đó mọi nút được lấp đầy hoàn toàn bằng nút 2 hoặc 0

4] Cây nhị phân suy biến

Mỗi cây nhị phân, trong đó mỗi nút bên trong chỉ có một nút con duy nhất

Ứng dụng của cây nhị phân

  1. Được sử dụng trong Trò chơi điện tử 3d
  2. Được sử dụng nhiều trong bộ định tuyến cho mục đích lập bảng
  3. Quy trình lập lịch trình trong hệ điều hành
Triển khai bằng Python với Giải thích

Triển khai Quy tắc. -

class BinaryTree:

    def __init__[self, value]:

        self.left = None
        self.right = None
        self.value = value

    def insert[self, value]:

        if self.value:
            if data < self.value:
                if self.left is None:
                    self.left = BinaryTree[value]
                else:
                    self.left.insert[value]
            elif data > self.value:
                if self.right is None:
                    self.right = BinaryTree[value]
                else:
                    self.right.insert[value]
        else:
            self.value = value

    def PrintTree[self]:
        if self.left:
            self.left.PrintTree[]
        print[ self.data],
        if self.right:
            self.right.PrintTree[]

root = BinaryTree[100]
root.insert[50]
root.insert[55]
root.insert[60]
root.insert[20]
root.insert[52]


root.PrintTree[]

đầu ra. - 20,24,35,40,55,60

Cấu trúc của cây. -

                                40
                               /  \
                              35  55
                             /      \
                            20      60
                              \
                              24

**Giải trình. - **

Ở đây, chúng ta định nghĩa một lớp BinarTree, trong đó có 3 phương thức được định nghĩa

  1. ________số 8_______
  2. chèn[]
  3. PrintTree[]

Các phương thức __init__ được tự gọi là

Bây giờ trong hàm chính khi chúng ta tạo một đối tượng của lớp trong gốc, chúng ta chuyển giá trị 40, mà chúng ta muốn là phần tử gốc. Trong dòng tiếp theo, chúng ta gọi phương thức insert[] với đối tượng và truyền giá trị 35, giá trị này đưa luồng chương trình đến hàm chèn, ở đó chúng ta kiểm tra xem giá trị mới lớn hơn hay nhỏ hơn giá trị gốc của nó với [if value key: root.left = delete_Node[root.left, key] elif root.val < key: root.right= delete_Node[root.right, key] else: if not root.right: return root.left if not root.left: return root.right temp_val = root.right mini_val = temp_val.val while temp_val.left: temp_val = temp_val.left mini_val = temp_val.val root.right = deleteNode[root.right,root.val] return root

Giải trình

Các chương trình trên giải thích quy trình xóa một phần tử cụ thể khỏi cây nhị phân đã cho. Ở đây root đại diện cho nút gốc và key đại diện cho phần tử cần xóa hoặc đã được người dùng đặt hàng. 4

-> Tìm kiếm phần tử chính trong cây con trái hoặc phải

Ban đầu, nó kiểm tra xem gốc [phần tử trên cùng] có trống hay không, nếu nó không trống thì nó kiểm tra phần tử khóa ít hơn phần tử gốc, nếu nó đúng thì người tìm kiếm curosr ở cây con bên trái của cây chính,

-> Kiểm tra nút chính sau khi tìm thấy và cuối cùng xóa nó

Trong điều kiện khác với điều kiện nếu không root. bên phải, nó kiểm tra xem có nút con nào phù hợp với nút [khóa] không và nút mới chính là nút gốc và với điều kiện nếu không phải là nút gốc. còn lại nó kiểm tra nếu không còn nút con nào để xóa thì nút gốc chính là nút đó

Bây giờ nếu tồn tại cả nút con bên trái và bên phải cho nút chính sẽ bị xóa thì chúng ta thay thế nút chính bằng giá trị nhỏ nhất của cây con bên phải của nó và sau đó xóa nút nhỏ nhất trong cây con bên phải đó

Với bài viết này tại OpenGenus, bạn phải có ý tưởng hoàn chỉnh về Triển khai Cây nhị phân trong Ngôn ngữ lập trình Python

Cây nhị phân dùng để làm gì?

Trong điện toán, cây nhị phân chủ yếu được sử dụng để tìm kiếm và sắp xếp vì chúng cung cấp phương tiện để lưu trữ dữ liệu theo thứ bậc. Một số thao tác phổ biến có thể được thực hiện trên cây nhị phân bao gồm chèn, xóa và duyệt.

Cây nhị phân trong lập trình là gì?

Cây nhị phân là cấu trúc dữ liệu phi tuyến tính kiểu cây với tối đa hai con cho mỗi gốc . Mỗi nút trong cây nhị phân có tham chiếu trái và phải cùng với phần tử dữ liệu. Nút ở trên cùng của hệ thống phân cấp của cây được gọi là nút gốc. Các nút chứa các nút con khác là các nút cha.

Cây nhị phân là gì và nó hoạt động như thế nào?

Cây nhị phân được tạo bởi các nút, trong đó mỗi nút chứa một con trỏ "trái", một con trỏ "phải" và một phần tử dữ liệu. The "root" pointer points to the topmost node in the tree. The left and right pointers recursively point to smaller "subtrees" on either side.

Có cây tìm kiếm nhị phân trong Python không?

Như tên gợi ý, tìm kiếm là thao tác chính của Cây tìm kiếm nhị phân trong Python . Nhiệm vụ chính của nó là tìm khóa trong Cây tìm kiếm nhị phân.

Chủ Đề