บทความนี้อธิบายวิธี Java ในการพิมพ์เส้นทางทั้งหมดของต้นไม้ไบนารี แบ่งปันสำหรับการอ้างอิงของคุณดังนี้:
คำถาม:
ให้ต้นไม้ไบนารีและพิมพ์เส้นทางทั้งหมด
ตัวอย่างเช่นสำหรับต้นไม้ไบนารีต่อไปนี้เส้นทางทั้งหมดคือ:
8 -> 3 -> 1
8 -> 2 -> 6 -> 4
8 -> 3 -> 6 -> 7
8 -> 10 -> 14 -> 13
แนวคิด:
เริ่มต้นจากโหนดรูทใส่ค่าของคุณเองในอาร์เรย์แล้วส่งอาร์เรย์นี้ไปยังโหนดลูก โหนดเด็กยังให้ค่าของตัวเองในอาร์เรย์นี้และส่งผ่านไปยังโหนดลูกจนกระทั่งโหนดนี้เป็นโหนดใบแล้วพิมพ์อาร์เรย์ออกมา ดังนั้นเราจำเป็นต้องใช้การเรียกซ้ำที่นี่
รหัส:
/** ให้ต้นไม้ไบนารีพิมพ์ออกมาจากรูตไปยังสายเลือดทั้งหมดหนึ่งต่อบรรทัด ใช้ตัวช่วยเรียกใช้ซ้ำเพื่อทำงาน*/โมฆะสาธารณะ printpaths (โหนดรูท, int n) {สตริง [] พา ธ = สตริงใหม่ [n]; printpaths (root, path, 0);}/** ตัวช่วยพิมพ์ซ้ำ-ให้โหนดและอาร์เรย์ที่มีเส้นทางจากโหนดรูทจนถึง แต่ไม่รวมโหนดนี้พิมพ์เส้นทางรูตใบทั้งหมด*/ช่องว่างส่วนตัว // ผนวกโหนดนี้เข้ากับเส้นทางอาเรย์พา ธ [pathlen ++] = node.value; // มันเป็นใบไม้ดังนั้นจึงพิมพ์เส้นทางที่นำไปสู่ที่นี่ถ้า (node.leftchild == null && node.rightchild == null) {printArray (เส้นทาง, pathlen); } else {// มิฉะนั้นลองใช้ PrintPaths ทั้งสอง subtrees (node.leftchild, Path, Pathlen); printpaths (node.rightchild, Path, Pathlen); }}/** ยูทิลิตี้ที่พิมพ์สตริงจากอาร์เรย์ในหนึ่งบรรทัด*/private void printarray (String [] ints, int len) {สำหรับ (int i = 0; i <len; i ++) {system.out.print (ints [i]+""); } system.out.println ();}หมายเหตุ: คุณสามารถใช้อาร์เรย์ + ค่าเพื่อพิมพ์เส้นทางที่ต้องการเท่านั้น หากคุณใช้โครงสร้างรายการที่เชื่อมโยงเช่น LinkedList มันจะไม่ทำงาน มันคุ้มค่าที่จะวิเคราะห์เหตุผลมันน่าสนใจมาก
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับอัลกอริทึม Java ผู้อ่านที่มีความสนใจในเว็บไซต์นี้สามารถดูหัวข้อ: "โครงสร้างข้อมูล Java และการสอนอัลกอริทึม", "บทสรุปของเคล็ดลับการดำเนินงาน Java Dom", "บทสรุปของไฟล์ Java และเคล็ดลับการดำเนินการไดเรกทอรี" และ "สรุป
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม Java ของทุกคน