📕
toanthuctecode
  • Cấu trúc dữ liệu và thuật toán (Python)
  • Giới thiệu
    • Lần thử đầu tiên
    • Đề xuất thuật toán
  • Bảng trình tự
    • Dạng cơ bản của bảng tuần tự
    • Cấu trúc và hiện thực của bảng tuần tự
  • Danh sách liên kết
    • Danh sách liên kết Singly
  • Ngăn xếp
    • Triển khai cấu trúc ngăn xếp
  • Hàng đợi
    • Thực hiện hàng đợi
  • Sắp xếp và tìm kiếm
    • Sắp xếp nổi bọt (Bubble Sort)
    • Sắp xếp lựa chọn (Selection sort)
    • Sắp xếp chèn(Insertion Sort)
    • Sắp xếp nhanh chóng ( Quicksort)
    • Sắp xếp theo kiểu đồi (Shell Sort)
    • Hợp nhất sắp xếp
    • Kết lại những thuật toán sắp xếp và xây dựng hàm sort sử dụng Python
    • Tìm kiếm
  • Cây và thuật toán cây
    • Cây nhị phân
    • Truyền qua cây nhị phân
Powered by GitBook
On this page
  • Thuộc tính (đặc điểm) của cây nhị phân
  • Biểu diễn nút của cây nhị phân và tạo cây

Was this helpful?

  1. Cây và thuật toán cây

Cây nhị phân

Khái niệm cơ bản về cây nhị phân

Cây nhị phân là một cấu trúc cây có nhiều nhất hai cây con trên mỗi nút. Thông thường các cây con được gọi là "cây con bên trái" và "cây con bên phải"

Thuộc tính (đặc điểm) của cây nhị phân

Thuộc tính 1: Có nhiều nhất 2 ^ (i-1) nút (i> 0) ở mức thứ i của cây nhị phân. Tính chất 2: Cây nhị phân có độ sâu k có nhiều nhất 2 ^ k-1 nút (k> 0) Tính chất 3: Đối với bất kỳ cây nhị phân nào, nếu số nút lá là N0 và tổng số nút có bậc 2 là N2 thì N0 = N2 + 1; Tính chất 4: Độ sâu của một cây nhị phân hoàn chỉnh có n nút phải là log2 (n + 1) Thuộc tính 5: Đối với một cây nhị phân hoàn chỉnh, nếu được đánh số từ trên xuống dưới và từ trái sang phải, nút được đánh số i, số con bên trái của nó phải là 2i và số con bên phải của nó phải là 2i + 1; Số của cấp độ gốc phải là i / 2 (i = 1 là số gốc, ngoại trừ)

(1) Cây nhị phân hoàn chỉnh-nếu chiều cao của cây nhị phân là h, ngoại trừ lớp thứ h, số nút trong tất cả các lớp khác (1 ~ h-1) đạt đến số lượng lớn nhất và lớp thứ h có các nút lá và lá Các nút được sắp xếp theo thứ tự từ trái sang phải là một cây nhị phân hoàn chỉnh.

(2) Cây nhị phân đầy đủ - mọi nút ngoại trừ các nút lá đều có các lá mầm bên trái và bên phải và các nút lá đều ở dưới cùng của cây nhị phân.

Biểu diễn nút của cây nhị phân và tạo cây

Bằng cách sử dụng ba thuộc tính được định nghĩa trong lớp Node, chúng là giá trị của chính elem, cũng như con bên trái của lchild và con bên phải của lchild

class Node(object):
    def __init__(self, elem=-1, lchild=None, rchild=None):
        self.elem = elem
        self.lchild = lchild
        self.rchild = rchild

Tạo một cây, tạo một lớp cây và cung cấp một nút gốc gốc, nút này trống ở đầu, sau đó thêm các nút

class Tree(object):
    def __init__(self, root=None):
        self.root = root

    def add(self, elem):
        node = Node(elem)
        if self.root == None:
            self.root = node
        else:
            queue = []
            queue.append(self.root)
            while queue:
                cur = queue.pop(0)
                if cur.lchild == None:
                    cur.lchild = node
                    return
                elif cur.rchild == None:
                    cur.rchild = node
                    return
                else:
                    queue.append(cur.lchild)
                    queue.append(cur.rchild)
PreviousCây và thuật toán câyNextTruyền qua cây nhị phân

Last updated 4 years ago

Was this helpful?