HỌ TÊN NGUYỄN XUÂN TRỰC MSSV 1513804 =========================o0o========================= Sử dụng cây BST để thao tác trên tập dữ liệu các nhân viên 1) Bước 1 Xây dựng một cấu trúc (struct) NhanVien[.]
HỌ TÊN : NGUYỄN XUÂN TRỰC MSSV : 1513804 =========================o0o========================= Sử dụng BST để thao tác tập liệu nhân viên 1) Bước 1: Xây dựng cấu trúc (struct) NhanVien để lưu trữ thông tin Nhân viên, nhân viên phân biệt mã nhân viên (maNV) 2) Bước 2: Xây dựng class Node class Node { public: NhanVien nhanVien; Node *pLeft; Node *pRight; public: Node() {} Node(NhanVien nv) { this->nhanVien = nv; this->pLeft = nullptr; this->pRight = nullptr; } }; // Thông tin nhân viên // Con trỏ trỏ đến Nút bên trái // Con trỏ trỏ đến Nút bên phải // Phương thức khời tạo Node 3) Bước 3: Xây dựng BST phương thức Bước 3.1: Xây dựng Lớp cây: class BST { private: Node *root; }; Bước 3.2: Khởi tạo rỗng: BST() { } this->root = nullptr; // Con trỏ nút gốc Bước 3.3: Thêm nhân viên vào BST (Giải thuật Đệ quy) Gọi nút cần thêm vào pNew Thêm NhanVien vào BST gồm bước, bắt đầu tử root nút gốc: B1: Nếu root == NULL, gán gốc root == pNew Kết thúc thêm vào B2: Nếu root->maNV == pNew->maNV, mã Nhân viên bị trùng, báo lỗi kết thúc thêm vào B3: Nếu pNew->maNV < root->maNV, thêm pNew vào trái root Ngược lại, thêm pNew vào phải root Lặp lại bước Bước 3.4: Update nhân viên (Giải thuật Đệ quy) Gọi nút cần update pNode Update NhanVien BST gồm bước, root nút gốc B1: Nếu root == NULL khơng tìm thấy pNode Nếu root->maNV == pNode->maNV thực cập nhật giới tính Nhân viên (root->gender = “Nam”) Kết thúc Update B2: Nếu root->maNV < pNode->maNV tìm pNode trái root Ngược lại tìm pNode phải root Lặp lại bước Bước 3.5: Tính sai biệt số nhân viên nữ nam có maNV < k (Đệ quy) Thực duyệt theo phương pháp Trung thứ tự (Left – Node – Right) để đếm sai biệt số nhân viên Nam Nữ có maNV < k B1: Khởi tạo bến đếm int demNam = 0; int demNu = 0; B2: Nếu root == NULL trả Findiff = B3: Duyệt trái Nế u root->maNV gender== “Nu”: demNu++; Nế u root->maNV gender== “Nam”: demNam++; Duyệt phải B4: Tính sai biệt Findiff = demNu - demNam ... lại bước Bước 3.5: Tính sai biệt số nhân viên nữ nam có maNV < k (Đệ quy) Thực duyệt theo phương pháp Trung thứ tự (Left – Node – Right) để đếm sai biệt số nhân viên Nam Nữ có maNV < k B1: Khởi... pNew->maNV, mã Nhân viên bị trùng, báo lỗi kết thúc thêm vào B3: Nếu pNew->maNV < root->maNV, thêm pNew vào trái root Ngược lại, thêm pNew vào phải root Lặp lại bước Bước 3.4: Update nhân viên (Giải...Bước 3.3: Thêm nhân viên vào BST (Giải thuật Đệ quy) Gọi nút cần thêm vào pNew Thêm NhanVien vào BST gồm bước, bắt đầu tử root nút gốc: B1: Nếu root ==