حاسبة فهارس أبناء الكومة الثنائية
تخزّن الكومة الثنائية شجرة داخل مصفوفة مسطّحة، ولذلك يتطلب الانتقال من عقدة أصل إلى أبنائها حساباً صغيراً لكنه مهم للفهارس.
شغّل الأداة مجانًا
تعيد هذه الحاسبة موضعي الابن الأيسر والابن الأيمن بدقة للعقدة التي تحددونها. يمكنكم اختيار الفهرسة التي تبدأ من الصفر، وهي الشائعة في لغات البرمجة، أو الفهرسة التي تبدأ من الواحد، وهي كثيرة الاستخدام في الكتب والشيفرة الكاذبة. تكون النتيجة حتمية وفورية، وتخضع للتحقق لمنع الجذور غير الصالحة أو الحسابات التي تتجاوز مجال الأعداد الصحيحة الآمنة في JavaScript.
اختاروا نظام الفهرسة قبل تطبيق الصيغة
تظل بنية الشجرة في الكومة الثنائية واحدة بصرف النظر عن طريقة ترقيم المصفوفة، لكن صيغ الأبناء تعتمد على موضع بدء الترقيم. عند الفهرسة من الصفر، يشغل الجذر الفهرس 0. لذلك يكون الابن الأيسر للعقدة الموجودة عند الفهرس i في 2i + 1، ويكون الابن الأيمن في 2i + 2. أما عند الفهرسة من الواحد، فيشغل الجذر الفهرس 1، فتصبح الصيغة 2i للابن الأيسر و2i + 1 للابن الأيمن. اختاروا النظام المطابق للمصفوفة أو الخوارزمية التي تفحصونها؛ فتبديل النظام من دون تغيير فهرس العقدة يشير إلى موضع مادي مختلف. تعرض الحاسبة النظام المختار وفهرس العقدة الأصلي إلى جانب النتيجتين، وبذلك يظل المعنى واضحاً. يفيد ذلك خصوصاً عند مقارنة الشيفرة المصدرية بكتاب تعليمي، لأن لغات كثيرة تستخدم مصفوفات تبدأ من الصفر، بينما قد تحجز الشروح التعليمية الموضع 0 وتبدأ الكومة من الموضع 1. إن التأكد من الاصطلاح أولاً يمنع نتيجة منحرفة بموضع واحد، مع أنها قد تبدو معقولة للوهلة الأولى.
أدخلوا فهرس عقدة صالحاً واقرؤوا موضعي الابنين
أدخلوا الموضع الصحيح للعقدة الأصل، ثم اختاروا نظام فهرسة المصفوفة. في الكومة التي تبدأ من الصفر، يجوز أن يكون فهرس العقدة 0 أو أي عدد صحيح آمن أكبر منه. وفي الكومة التي تبدأ من الواحد، يجب ألا يقل عن 1 لأن الموضع 0 خارج هذا الاصطلاح. تتضمن الإجابة left_child_index وright_child_index في صورة عددين صحيحين يمكن استخدامهما مباشرة لفحص مصفوفة أو إنشاء عملية اجتياز أو التحقق من تنفيذ خوارزمية. تمثل هاتان القيمتان موضعين بنيويين، ولا تثبتان وجود عنصرين فعليين فيهما. فقد لا تحتوي الكومة الأقصر على أي ابن، أو قد تحتوي في نهايتها على الابن الأيسر وحده. قارنوا كل فهرس مع حدود المصفوفة قبل الوصول إلى عنصره في الشيفرة. عند الفهرسة من الصفر، لا يوجد الابن إلا إذا كان فهرسه أصغر من طول المصفوفة. وعند الفهرسة من الواحد، يعتمد الحد الصحيح على ما إذا كان الموضع 0 محجوزاً فعلياً، لذا استخدموا التمثيل المعتمد في برنامجكم. يحافظ هذا الفصل على دقة الحساب من دون افتراض حجم معين للكومة.
استخدموا النتيجة لاختبار عمليات الكومة وتصحيحها
تعد فهارس الأبناء أساسية في الإنزال داخل الكومة، وبنائها، والحذف من طابور الأولوية، وعرض الشجرة. أثناء الإنزال، يحسب التنفيذ الموضعين ويتحقق من الأبناء الموجودين ويقارن أولوياتهم المخزنة، ثم يبدل الأصل بالابن الملائم عند انتهاك خاصية الكومة. قد يؤدي اختيار اصطلاح خاطئ إلى تجاوز الابن الأيسر الحقيقي، أو القراءة بعد نهاية المصفوفة، أو مقارنة عناصر غير مترابطة، مع بقاء الشيفرة معقولة من الناحية الرياضية في ظاهرها. توفر هذه الحاسبة فحصاً مستقلاً وسريعاً للأمثلة واختبارات الوحدات والتمارين التقنية ومراجعات الشيفرة. جرّبوا الجذر وعقدة داخلية وعقدة قريبة من نهاية الكومة لتغطية الحالات الأكثر كشفاً للأخطاء. لا يقبل الحساب إلا الأعداد الصحيحة الآمنة، ويرفض النتائج التي تتجاوز المجال الصحيح الدقيق، وبذلك يمنع التقريب الصامت للفهارس عند إدخال قيم ضخمة على نحو غير واقعي. لا تُجرى أي طلبات شبكية، ولا تُستخدم قيم عشوائية أو مرتبطة بالوقت. تشترك حاسبة المتصفح ومعالج API في الدالة النقية نفسها، ولذلك ينتج الإدخال نفسه المخرج نفسه في البيئتين، بسعر $0.002 لكل طلب API.
حالات الاستخدام
تصحيح تنفيذ الإنزال في الكومة
تحققوا من أن طابور الأولوية يفحص موضعي المصفوفة الصحيحين بعد إزالة الجذر.
تحويل صيغ الكتب إلى شيفرة
قارنوا الشيفرة الكاذبة التي تبدأ من الواحد بلغة تبدأ من الصفر من دون إدخال خطأ انحراف بموضع واحد.
إنشاء حالات اختبار للكومة
ولّدوا مواضع الأبناء المتوقعة للجذور والعقد الداخلية والحالات الحدية ضمن اختبارات حتمية.
الأسئلة الشائعة
ما الصيغ المستخدمة عند الفهرسة من الصفر؟
للعقدة الموجودة عند الفهرس i، يكون الابن الأيسر في 2i + 1 والابن الأيمن في 2i + 2.
ما الصيغ المستخدمة عند الفهرسة من الواحد؟
للعقدة الموجودة عند الفهرس i، يكون الابن الأيسر في 2i والابن الأيمن في 2i + 1.
هل يضمن الفهرس المعاد وجود الابن؟
لا. تعطي النتيجة مواضع بنيوية. قارنوا كل موضع بحدود المصفوفة الفعلية قبل قراءة أي عنصر.
لماذا لا يصلح الفهرس صفر في وضع البدء من الواحد؟
تضع الكومة المفهرسة من الواحد جذرها في الموضع 1، ولذلك لا يمثل الموضع 0 عقدة في هذا النظام.
ما تكلفة الحساب عبر API؟
يكلف كل طلب API مبلغ $0.002. ويمكنكم أيضاً تشغيل الحساب الحتمي نفسه في المتصفح.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/dev/heap-children-index \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"node_index":5}'const res = await fetch("https://api.kit.forhosting.com/dev/heap-children-index", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"node_index": 5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/heap-children-index",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"node_index": 5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/heap-children-index", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"node_index":5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"node_index":5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/heap-children-index", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"node_index": 5
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.heap_children_index",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |