Hướng dẫn what is binary search tree in python - cây tìm kiếm nhị phân trong python là gì

Cây tìm kiếm nhị phân là gì? 🔗 🔗

Cây tìm kiếm nhị phân, hoặc viết tắt là một cây trong đó mỗi nút có giá trị lớn hơn tất cả các nút con trái của nó và ít hơn tất cả các nút con phải của nó. Đọc tiếp để thực hiện một cây tìm kiếm nhị phân trong Python từ đầu!

Tại sao tôi sẽ sử dụng một cây tìm kiếm nhị phân? 🔗 🔗

Cây nhị phân rất hữu ích để lưu trữ dữ liệu theo cách có tổ chức để có thể nhanh chóng lấy, chèn, cập nhật và xóa. Sự sắp xếp của các nút này cho phép mỗi so sánh để bỏ qua khoảng một nửa phần còn lại của cây, do đó, mỗi hoạt động nói chung là sét nhanh.

Nói chính xác, các cây tìm kiếm nhị phân cung cấp độ phức tạp trung bình lớn của

  10                                10
 /   \        Insert 5            /    \
 2    60    --------->           2     60
/  \                            /  \
1   3                           1   3
                                     \
                                      5
1 cho các hoạt động tìm kiếm, chèn, cập nhật và xóa.
  10                                10
 /   \        Insert 5            /    \
 2    60    --------->           2     60
/  \                            /  \
1   3                           1   3
                                     \
                                      5
2 nhanh hơn nhiều so với thời gian
  10                                10
 /   \        Insert 5            /    \
 2    60    --------->           2     60
/  \                            /  \
1   3                           1   3
                                     \
                                      5
3 tuyến tính cần thiết để tìm các phần tử trong một mảng chưa được phân loại. Nhiều cơ sở dữ liệu sản xuất phổ biến như PostgreSQL và MySQL sử dụng cây nhị phân dưới mui xe để tăng tốc các hoạt động của CRUD.

Ưu điểm của một BST 🔗 🔗

  • Khi cân bằng, một BST cung cấp các lần chèn, xóa và tra cứu
      10                                10
     /   \        Insert 5            /    \
     2    60    --------->           2     60
    /  \                            /  \
    1   3                           1   3
                                         \
                                          5
    
    1 nhanh.
  • Cây tìm kiếm nhị phân rất đơn giản để thực hiện. Một BST thông thường, không giống như một cây màu đen màu đỏ cân bằng, đòi hỏi rất ít mã để chạy.

Nhược điểm của một BST 🔗 🔗

  • Chậm cho một tìm kiếm vũ phu. Nếu bạn cần lặp lại trên mỗi nút, bạn có thể có nhiều thành công hơn với một mảng.
  • Khi cây trở nên không cân bằng, tất cả các hoạt động
      10                                10
     /   \        Insert 5            /    \
     2    60    --------->           2     60
    /  \                            /  \
    1   3                           1   3
                                         \
                                          5
    
    1 nhanh chóng xuống cấp xuống
      10                                10
     /   \        Insert 5            /    \
     2    60    --------->           2     60
    /  \                            /  \
    1   3                           1   3
                                         \
                                          5
    
    3.
  • Vì các con trỏ đến toàn bộ các đối tượng thường có liên quan, một BST có thể yêu cầu khá nhiều bộ nhớ hơn một mảng, mặc dù điều này phụ thuộc vào việc thực hiện.

Nhận một công việc back-end mà không cần chi 10 nghìn đô la cho một bootcamp

  • Tìm hiểu Python, JavaScript và GO
  • Xây dựng các dự án chuyên nghiệp mà bạn cần để tìm được công việc đầu tiên của mình
  • Dành khoảng 6 tháng [khi hoàn thành bán thời gian]
  • Giá thấp tới $ 24/tháng*
  • Không mạo hiểm. Hủy bất cứ lúc nào.

Thực hiện một cây B trong Python 🔗 🔗

Bước 1 - Lớp BSTNode 🔗 🔗

Việc triển khai của chúng tôi đã giành chiến thắng sử dụng một lớp

  10                                10
 /   \        Insert 5            /    \
 2    60    --------->           2     60
/  \                            /  \
1   3                           1   3
                                     \
                                      5
7, nhưng thay vào đó chỉ là một lớp
  10                                10
 /   \        Insert 5            /    \
 2    60    --------->           2     60
/  \                            /  \
1   3                           1   3
                                     \
                                      5
8. Cây nhị phân thực sự chỉ là một con trỏ tới một nút gốc lần lượt kết nối với từng nút con, vì vậy chúng tôi sẽ chạy với ý tưởng đó.

Đầu tiên, chúng tôi tạo một hàm tạo:

class BSTNode:
    def __init__[self, val=None]:
        self.left = None
        self.right = None
        self.val = val

Chúng tôi sẽ cho phép một giá trị, cũng sẽ đóng vai trò là chìa khóa, được cung cấp. Nếu một người không được cung cấp, chúng tôi sẽ đặt nó thành

  10                                10
 /   \        Insert 5            /    \
 2    60    --------->           2     60
/  \                            /  \
1   3                           1   3
                                     \
                                      5
9. Chúng tôi cũng sẽ khởi tạo cả hai đứa trẻ của nút mới thành
  10                                10
 /   \        Insert 5            /    \
 2    60    --------->           2     60
/  \                            /  \
1   3                           1   3
                                     \
                                      5
9.

Bước 2 - Chèn 🔗 🔗

Chúng ta cần một cách để chèn dữ liệu mới vào cây. Chèn một nút mới nên nối nó như một nút lá ở vị trí thích hợp.

  10                                10
 /   \        Insert 5            /    \
 2    60    --------->           2     60
/  \                            /  \
1   3                           1   3
                                     \
                                      5

Phương pháp chèn như sau:

def insert[self, val]:
    if not self.val:
        self.val = val
        return

    if self.val == val:
        return

    if val 

Bài Viết Liên Quan

Chủ Đề