تصف هذه المقالة العمليات المشتركة للأشجار الثنائية التي تنفذها Java. شاركه للرجوع إليه ، على النحو التالي:
استيراد java.util.arraydeque ؛ استيراد java.util.queue ؛ استيراد java.util.stack ؛ // إنشاء الأشجار الثنائية ، العودية العودية غير المتراكبة التسلسلية الهرمية في المقدمة ، عقدة عقدة العقل {int element ؛ اليسار العقدة. العقدة اليمنى ؛ NODE () {} العقدة العامة (int element) {this.element = element ؛ }} // BinaryTreePublic Class Tree {// إنشاء شجرة من Array Public Static Node CreattRee (int [] data ، int i) {if (i> = data.length || data [i] == -1) return null ؛ عقدة temp = عقدة جديدة (البيانات [i]) ؛ temp.left = kreastree (البيانات ، i * 2 + 1) ؛ temp.right = kreastree (البيانات ، i * 2 + 2) ؛ عودة درجة الحرارة. } // ما قبل الطلب المسبق للالتقاط العودية الفراغ الثابتة pre (temp) {if (temp == null) return ؛ System.out.print (temp.element + "") ؛ قبل (temp.left) ؛ قبل (temp.right) ؛ } // midder-order transeral static public void mid (temp) {if (temp == null) return ؛ منتصف (temp.left) ؛ System.out.print (temp.element + "") ؛ منتصف (temp.right) ؛ }. الأخير (temp.left) ؛ الأخير (temp.right) ؛ System.out.print (temp.element + "") ؛ } // pre1 pre1 orderval arversal public stative preped pre1 (node temp) {stack <Node> stack = new stack <> () ؛ بينما (temp! = null ||! stack.isempty ()) {بينما temp! = null) {stack.push (temp) ؛ System.out.print (temp.element + "") ؛ temp = temp.left ؛ } if (! stack.isempty ()) {temp = stack.pop (). right ؛ }}} // arversal in-order of Mid1 غير المرسوم الفراغ الثابت mid1 (temp) {stack <Node> stack = new 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 بعد الترتيب التجاري غير العادي غير الثابت الفراغ الثابت LAST1 (TEMP) {stack <Node> stack = new stack <> () ؛ المكدس <Node> stack2 = مكدس جديد <> () ؛ بينما (temp! = null ||! stack.isempty ()) {بينما temp! = null) {stack.push (temp) ؛ Stack2.push (temp) ؛ temp = temp.right ؛ } if (! stack.isempty ()) {temp = stack.pop (). اليسار ؛ }} بينما (! stack2.isempty ()) system.out.print (stack2.pop (). element + "") ؛ } // ceng layer sequence termence public static void ceng (node temp) {if (temp == null) return ؛ قائمة الانتظار <Node> Queue = new ArrayDeque <> () ؛ Queue.Offer (temp) ؛ بينما (! 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) ؛ }} // demo public static void main (string [] args) {int [] array = {1 ، 2 ، 3 ، 4 ، 5 ، 6 ، 7 ، -1 ، -1 ، 10 ، -1 ، -1 ، 13} ؛ شجرة العقدة = kheattree (صفيف ، 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 وبرنامج تعليمي الخوارزمية" ، "ملخص" Tips Java ".
آمل أن يكون هذا المقال مفيدًا لبرمجة Java للجميع.