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

In Mức của tất cả các nút trong Cây nhị phân trong Lập trình C ++.

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

In Mức của tất cả các nút trong Cây nhị phân trong Lập trình C ++.

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à 3  

Thuậ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ụ

 #include  using 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