Python có cây nhị phân không?

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ỏ tới 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ỏ tới tám cây con tiếp theo

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

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á. - Nút không có nút con
Độ sâu của 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 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

Python có tích hợp trong BST không?

Cây tìm kiếm nhị phân là cấu trúc dữ liệu mạnh mẽ có thể giúp việc tìm kiếm, sắp xếp và duy trì dữ liệu trở nên dễ dàng. Python không bao gồm lớp BST theo mặc định —nhưng cho phép nhà phát triển triển khai lớp tùy chỉnh một cách dễ dàng.

Cây có được sử dụng trong Python không?

Python không triển khai cây cho chúng ta nên chúng ta sẽ định nghĩa chúng bằng từ điển. Mỗi nút của cây sẽ là một từ điển có hai khóa. Khóa đầu tiên là chuỗi "giá trị", ánh xạ tới giá trị trong nút.

Chủ Đề