บทความนี้อธิบายการดำเนินการทั่วไปของต้นไม้ไบนารีที่ดำเนินการโดย Java แบ่งปันสำหรับการอ้างอิงของคุณดังนี้:
นำเข้า java.util.arraydeque; นำเข้า java.util.queue; นำเข้า java.util.stack; // การสร้างต้นไม้ไบนารี, การสำรวจลำดับชั้นตามลำดับชั้นแบบไม่ซ้ำซ้อนแบบเรียกซ้ำได้ โหนดซ้าย; โหนดขวา; โหนดสาธารณะ () {} โหนดสาธารณะ (องค์ประกอบ int) {this.element = องค์ประกอบ; }} // ทรีคลาส BinaryTreepublic {// Creat Tree จาก Array Public Public Node Creattree (int [] ข้อมูล, int i) {ถ้า (i> = data.length || data [i] == -1) ส่งคืน null; โหนดอุณหภูมิ = โหนดใหม่ (ข้อมูล [i]); temp.left = creattree (ข้อมูล, i * 2 + 1); temp.right = creattree (ข้อมูล, i * 2 + 2); กลับอุณหภูมิ; } // ก่อนการสั่งซื้อล่วงหน้าการเดินทางแบบเรียกซ้ำโมฆะสาธารณะคงที่ pre (โหนดอุณหภูมิ) {ถ้า (temp == null) กลับ; System.out.print (temp.element + ""); pre (temp.left); pre (temp.right); } // mid-order traversal Recursive public static void mid (โหนดอุณหภูมิ) {ถ้า (temp == null) กลับ; กลาง (temp.left); System.out.print (temp.element + ""); Mid (Temp.right); } // ล่าสุดโพสต์ลำดับการเดินทางแบบเรียกซ้ำโมฆะสาธารณะคงที่สุดท้าย (โหนดอุณหภูมิ) {ถ้า (อุณหภูมิ == null) กลับ; สุดท้าย (temp.left); สุดท้าย (temp.right); System.out.print (temp.element + ""); } // pre1 pre1 การสั่งซื้อล่วงหน้า traversal non-recursive public static void pre1 (node temp) {stack <node> stack = stack ใหม่ <> (); ในขณะที่ (temp! = null ||! stack.isempty ()) {ในขณะที่ (temp! = null) {stack.push (temp); System.out.print (temp.element + ""); temp = temp.left; } if (! stack.isempty ()) {temp = stack.pop (). ถูกต้อง; }}} // traversal ในการสั่งซื้อของ MID1 โมฆะแบบคงที่สาธารณะที่ไม่ได้รับการชดเชย mid1 (โหนดอุณหภูมิ) {สแต็ก <node> stack = สแต็กใหม่ <> (); ในขณะที่ (temp! = null ||! stack.isempty ()) {ในขณะที่ (temp! = null) {stack.push (temp); temp = temp.left; } if (! stack.isempty ()) {temp = stack.pop (); System.out.print (temp.element + ""); Temp.right; }}} // last1 post-order traversal non-recursive public static void last1 (โหนดอุณหภูมิ) {stack <node> stack = stack ใหม่ <> (); สแต็ค <node> stack2 = ใหม่สแต็ก <> (); ในขณะที่ (temp! = null ||! stack.isempty ()) {ในขณะที่ (temp! = null) {stack.push (temp); stack2.push (อุณหภูมิ); Temp = Temp.right; } if (! stack.isempty ()) {temp = stack.pop (). ซ้าย; }} ในขณะที่ (! stack2.isempty ()) System.out.print (stack2.pop (). องค์ประกอบ + ""); } // Ceng Sequence Sequence Traversal Public Static Void Ceng (Node Temp) {ถ้า (temp == null) กลับ; คิว <node> queue = new ArrayDeque <> (); queue.offer (อุณหภูมิ); ในขณะที่ (! queue.isempty ()) {temp = queue.poll (); System.out.print (temp.element + ""); if (temp.left! = null) queue.offer (temp.left); if (temp.right! = null) queue.offer (temp.right); }} // การสาธิตโมฆะสาธารณะคงที่หลัก (สตริง [] args) {int [] array = {1, 2, 3, 4, 5, 6, 7, -1, -1, 10, -1, -1, 13}; Node Tree = Creattree (Array, 0); System.out.println ("ผลการทดสอบ wulin.com:"); ก่อน (ต้นไม้); System.out.println (); pre1 (ต้นไม้); System.out.println (); กลาง (ต้นไม้); System.out.println (); MID1 (ต้นไม้); System.out.println (); MID1 (ต้นไม้); System.out.println (); สุดท้าย (ต้นไม้); System.out.println (); Last1 (ต้นไม้); System.out.println (); Ceng (ต้นไม้); -ผลการทำงาน:
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับอัลกอริทึม Java ผู้อ่านที่มีความสนใจในเว็บไซต์นี้สามารถดูหัวข้อ: "โครงสร้างข้อมูล Java และการสอนอัลกอริทึม", "บทสรุปของเคล็ดลับการดำเนินงาน Java Dom", "บทสรุปของไฟล์ Java และเคล็ดลับการดำเนินการไดเรกทอรี" และ "สรุป
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม Java ของทุกคน