سؤال

أحتاج إلى معرفة عدد القيم التي يتم احتراؤها في شجرة ثنائية.

هذا هو الكود الخاص بي.

private int countEven(BSTNode root){

if ((root == null)|| (root.value%2==1))
return 0;

return 1+ countEven(root.left) + countEven(root.right);


}

لقد قمت بترميز هذا لأنني ليس لدي طريقة لاختبار هذا. أنا غير قادر على اختباره في الوقت الحالي ولكن أحتاج إلى إجابة سيئة للغاية. وهي محط تقدير بالغ أي مساعدة.

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

المحلول

إذا كانت هناك عقدة ذات قيمة غريبة تحتوي على مواد فرعية مع قيم متساوية ، فلن يتم حساب الأنود الفرعية في الكود الخاص بك. تعزيز صغير أدناه.

private int countEven(BSTNode root){

  if (root == null)
    return 0;

  int val = (root.value%2==1) ? 0 : 1;

  return val + countEven(root.left) + countEven(root.right);


}

نصائح أخرى

private int countEven(BSTNode root) {
   if (root == null)
      return 0;

   int n = countEven(root.left) + countEven(root.right);
   if(root.value % 2 == 0)
      return n + 1;
   else
      return n;
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top