Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình C ++ để triển khai cây tìm kiếm nhị phân bằng cách sử dụng danh sách được liên kết

Đây là chương trình C ++ để triển khai cây tìm kiếm nhị phân bằng cách sử dụng danh sách được liên kết.

Hàm và pseucodes

Thuật toán

 Begin Lấy các nút của cây làm đầu vào. Tạo một nút cấu trúc để lấy dữ liệu d, một con trỏ trái l và một r phải làm đầu vào. Tạo một hàm create () để chèn các nút vào cây:Khởi tạo c =0 là số nút. Thực hiện vòng lặp while cho đến c <6:Nhập thư mục gốc. Nhập giá trị của nút, nếu nó lớn hơn giá trị gốc thì nhập vào bên phải, nếu không, bên trái. Tạo một hàm inorder () để duyệt qua nút dưới dạng inorder như:Left - Root - Right. Tạo một hàm preorder () để duyệt qua nút theo thứ tự trước như:Root - Left - Right. Tạo một hàm postorder () để duyệt qua nút theo thứ tự trước như:Left - Right - Root Từ main (), gọi các hàm và in kết quả. 

Mã mẫu

 #include  using namespace std; struct gật {gật * l, * r; int d;} * r =NULL, * p =NULL, * np =NULL, * q; void create () {int v, c =0; while (c <6) {if (r ==NULL) {r =new gật; cout <<"nhập giá trị của nút gốc \ n"; cin>> r-> d; r-> r =NULL; r-> l =NULL; } else {p =r; cout <<"nhập giá trị của nút \ n"; cin>> v; while (true) {if (v  d) {if (p-> l ==NULL) {p-> l =new gật; p =p-> l; p-> d =v; p-> l =NULL; p-> r =NULL; cout <<"giá trị được nhập vào bên trái \ n"; phá vỡ; } else if (p-> l! =NULL) {p =p-> l; }} else if (v> p-> d) {if (p-> r ==NULL) {p-> r =new gật; p =p-> r; p-> d =v; p-> l =NULL; p-> r =NULL; cout <<"giá trị được nhập vào bên phải \ n"; phá vỡ; } else if (p-> r! =NULL) {p =p-> r; }}}} c ++; }} void inorder (gật * p) {if (p! =NULL) {inorder (p-> l); cout < d < r); }} void preorder (gật * p) {if (p! =NULL) {cout < d < l); đặt hàng trước (p-> r); }} void postorder (gật * p) {if (p! =NULL) {postorder (p-> l); đơn đặt hàng (p-> r); cout < d < 

Đầu ra

 nhập giá trị của giá trị trung tâm gốc của node6value được nhập vào giá trị bên trái của node4value được nhập vào giá trị bên trái của node3value được nhập vào giá trị bên trái của node2value được nhập trong giá trị bên trái của giá trị node1 được nhập vào bên trái trong inorder123467 chuyển đổi trong preorder764321traversal trong postorder123467