Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ผลิตภัณฑ์ของโหนดลีฟทั้งหมดของไบนารีทรีใน C++


ให้ด้วยไบนารีทรีที่มีโหนด และภารกิจคือการค้นหาผลคูณของโหนดปลายสุดของไบนารีทรีที่กำหนด

โหนดลีฟเป็นโหนดปลายที่ไม่มีลูก ในแผนผัง โหนดสามารถทำหน้าที่เป็นโหนดหลักหรือโหนดย่อยได้ ยกเว้นโหนดรากที่สามารถเป็นโหนดหลักเท่านั้น ดังนั้นโหนดที่มีตัวชี้ขวาและซ้ายเป็น NULL จึงเป็นโหนดปลายสุด

ป้อนข้อมูล

ผลิตภัณฑ์ของโหนดลีฟทั้งหมดของไบนารีทรีใน C++

ผลลัพธ์

โหนดใบคือ -:23, 34, 25Product-:23*34*25 =19550

แนวทาง

  • ป้อนข้อมูลโหนด

  • ข้ามโหนดทั้งหมดที่เริ่มต้นจากโหนดรูทและไปที่ไดเร็กทอรีย่อยด้านซ้ายหรือไดเร็กทอรีย่อยด้านขวาสำหรับการข้ามผ่าน

  • จัดเก็บโหนดที่มีตัวชี้ขวาและซ้ายเป็น NULL ไว้ในตัวแปรชั่วคราวเพื่อค้นหาผลิตภัณฑ์

  • พิมพ์ค่าของตัวแปรชั่วคราวที่เก็บค่าที่คูณไว้

อัลกอริทึม

StartStep 1 → สร้างโครงสร้างของโหนดและ temp ถัดไป และมุ่งหน้าเป็นตัวชี้ไปยังโหนดโครงสร้าง struct node int data สร้างโหนด *ซ้าย *ขวา EndStep 2 → ประกาศฟังก์ชันเพื่อแทรกโหนดในโหนดทรี* new_node( int data) Set node* temp =new node() Set temp→data =data Set temp→left =temp→right =NULL return temp EndStep 3 → ประกาศฟังก์ชันเพื่อค้นหาผลิตภัณฑ์ของโหนดลีฟทั้งหมด ถือเป็นโมฆะ ใบไม้ , int &product) IF (!root) Return End IF (!root→left &&!root→right) Set product *=root→data Call leaf(root→left, product) Call leaf(root→right, product)ขั้นตอนที่ 4 → ใน main() สร้างโหนด* root =new_node(10) ตั้งค่า root→left =new_node (20) ตั้งค่า root→left→left =new_node(30) ตั้งค่า int product =1 Call leaf (root, product) แสดง productStop 

ตัวอย่าง

#include ใช้เนมสเปซ std;// โครงสร้างของโหนด nodestruct { ข้อมูล int; โหนด * ซ้าย * ขวา;}; // ฟังก์ชันเพื่อสร้างโหนดใหม่ของ treenode* new_node (ข้อมูล int) { node* temp =โหนดใหม่ (); อุณหภูมิ→ข้อมูล =ข้อมูล; temp→left =temp→right =NULL; return temp;}//ฟังก์ชันเพื่อค้นหาผลิตภัณฑ์ของ leaf nodes ทั้งหมดของ treevoid leaf (node* root, int &product){ if (!root) return; ถ้า (!root→left &&!root->right) ผลิตภัณฑ์ *=root→data; ใบไม้(ราก→ซ้าย, ผลิตภัณฑ์); ใบไม้ (ราก→ขวา ผลิตภัณฑ์);}int main(){ โหนด* root =new_node(10); รูท→ซ้าย =new_node (20); รูท→ซ้าย→ซ้าย =new_node(30); รูท→ซ้าย→ขวา =new_node(40); รูท→ขวา =new_node(50); รูท→ขวา→ขวา =new_node(60); รูท→ขวา→ซ้าย =new_node(70); ผลิตภัณฑ์ int =1; ใบไม้(ราก, ผลิตภัณฑ์); cout<<"ผลิตภัณฑ์ของ leaf nodes คือ :"< 

ผลลัพธ์

หากรันโค้ดด้านบน มันจะสร้างผลลัพธ์ต่อไปนี้ -

ผลิตภัณฑ์ของลีฟโหนดคือ :5040000