Với cây nhị phân, nhiệm vụ là in mức được liên kết với mọi khóa được lưu trữ trong một nút bắt đầu từ 1 đến n
Trong cây trên, các nút là -
10 ở cấp 13 và 211 ở cấp 2140, 162, 100 và 146 ở cấp 3
Với khóa, chương trình phải in cấp của khóa cụ thể đó.
Ví dụ
Đầu vào:10 3 211 140 162 100 146 Đầu ra:mức 10 là 1 Mức 3 là 2 Mức 211 là 2 Mức 140 là 3 Mức 162 là 3 Mức 100 là 3 Mức 146 là 3Thuật toán
STARTSBước 1 -> tạo cấu trúc của một nút dưới dạng nút struct node struct node * left, * right int data EndStep 2 -> chức năng tạo một node node * newnode (int data) node * temp =new node temp-> data =data temp-> left =temp-> right =NULL return tempstep 3 -> tạo hàm để tìm các mức của một nút có mức trống (Node * root) IF root =NULL Return End Tạo hàng đợi STL> que que.push ({root, 1}) tạo cặp STL par Vòng lặp Trong khi! que.empty () par =que.front () que.pop () print par.first-> data và par.second IF par.first-> left que.push ({par.first-> left, par.second + 1}) KẾT THÚC NẾU par.first-> right que.push ({par.first-> right, par.second + 1}) Kết thúc EndSTOP Ví dụ
#includeusing namespace std; // cấu trúc của một nút kết cấu Node {int data; struct Node * left, * right;}; // nó sẽ in ra các mức của một treevoid cấp (Node * root) {if (root ==NULL) return; hàng đợi > que; que.push ({root, 1}); cặp par; while (! que.empty ()) {par =que.front (); que.pop (); cout <<"Level of" < data <<"is" < left) que.push ({par.first-> left, par.second + 1}); if (par.first-> right) que.push ({par.first-> right, par.second + 1}); }} // hàm tạo các nút và do đó tạo ra treeNode * newnode (int data) {Node * temp =new Node; temp-> data =dữ liệu; temp-> left =temp-> right =NULL; return temp;} int main () {Node * root =NULL; // nó sẽ tạo một nút root =newnode (34); root-> left =newnode (12); root-> right =newnode (50); root-> left-> left =newnode (11); root-> left-> right =newnode (54); các cấp (gốc); trả về 0;} Đầu ra
nếu chúng ta chạy chương trình trên thì nó sẽ tạo ra kết quả sau
Mức 34 là 1 Mức 12 là 2 Mức 50 là 2 Mức 11 là 3 Mức 54 là 3