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

Tích của tất cả các nút lá của cây nhị phân trong C ++


Được đưa ra với một cây nhị phân chứa các nút và nhiệm vụ là tìm tích của tất cả các nút lá của một cây nhị phân đã cho.

Các nút lá là các nút cuối không có bất kỳ nút con nào. Trong một cây, một nút có thể hoạt động như một nút cha hoặc nút con ngoại trừ nút gốc chỉ có thể là nút cha. Vì vậy, các nút với con trỏ phải và trái là NULL là các nút lá.

Đầu vào

Tích của tất cả các nút lá của cây nhị phân trong C ++

Đầu ra

 Các nút lá là -:23, 34, 25 Sản phẩm-:23 * 34 * 25 =19550 

Phương pháp tiếp cận

  • Nhập dữ liệu nút

  • Duyệt qua tất cả các nút bắt đầu từ nút gốc và chuyển đến thư mục con bên trái hoặc thư mục con bên phải để duyệt.

  • Lưu trữ các nút đó với con trỏ phải và trái là NULL vào một biến tạm thời để tìm sản phẩm.

  • In giá trị của một biến tạm thời chứa các giá trị được nhân.

Thuật toán

 StartStep 1 → tạo cấu trúc của một nút và tạm thời, tiếp theo và đầu dưới dạng con trỏ đến một nút cấu trúc. int data) Đặt nút * temp =nút mới () Đặt nhiệt độ → dữ liệu =dữ liệu Đặt nhiệt độ → trái =nhiệt độ → phải =NULL trả về nhiệt độ Kết thúc Bước 3 → Khai báo một hàm để tìm tích của tất cả các nút lá void leaf (nút * gốc , int &product) IF (! root) Trả về End IF (! root → left &&! root → right) Đặt product * =root → data Gọi lá (gốc → trái, sản phẩm) Gọi lá (gốc → phải, sản phẩm) Bước 4 → Trong main () Tạo nút * root =new_node (10) Đặt root → left =new_node (20) Đặt root → left → left =new_node (30) Đặt int product =1 Call lá (root, product) Hiển thị productStop  

Ví dụ

 #include  using namespace std; // cấu trúc của nút kết cấu nút {int data; node * left, * right;}; // hàm tạo lá mới của treenode * new_node (int data) {node * temp =new node (); temp → data =dữ liệu; temp → left =temp → right =NULL; return temp;} // hàm tìm tích của tất cả các nút lá của lá dạng cây (node ​​* root, int &product) {if (! root) return; if (! root → left &&! root-> right) product * =root → data; lá (gốc → trái, sản phẩm); leaf (root → right, product);} int main () {node * root =new_node (10); root → left =new_node (20); root → left → left =new_node (30); root → left → right =new_node (40); root → right =new_node (50); root → right → right =new_node (60); root → right → left =new_node (70); int product =1; lá (rễ, sản phẩm); cout <<"tích của một nút lá là:" < 

Đầu ra

Nếu chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

 tích của một nút lá là:5040000