سؤال

لدي جزء الرمز هذا

class bst {
  public node root=null;

  bst() {
    root=null;
  }

  public void insert(int data) {  
    insert(this.root,data);
  }

  private void insert(node ro,int data) {
    if (ro==null) {
      print ("root is null");
      ro=new node(data);
    } else if (data>ro.data)
      insert(ro.right,data); 
    else
      insert(ro.left,data);
  }

  private void print (String str) 
  {
    System.out.println(str);
  }
}

عندما أسمي insert وظيفة مثل insert(5); insert(8); انها طباعة alwaty root is null.

ما هي المشكلة؟؟

هل كانت مفيدة؟

المحلول

مشكلتك هي ذلك ro متغير داخل insert الطريقة هي مجرد نسخة من الإشارة إلى bst.ro. بمعنى أنه إذا كنت إعادة تعيين ال ro متغير داخل الطريقة ، فقط نسخة من المرجع سوف تشير إلى الجديد ro, ، سيبقى الكائن الذي تم تمريره في الأصل كما هو.

سؤالك هو أعلى 1 من المعلمة التي تمرير الأسئلة الشائعة. أنا نفسي أجبت بالفعل على هذا السؤال أكثر من مرة. تحقق من ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top