طَبِّقْهاتعلّم المبدأ، وطبّقه بيدكمقرر 101 · تركيب البيانات والخوارزميات
تقييم الدرس 16

شجرة البحث الثنائية

أجب عن الأسئلة ثم اضغط «صحّح ورقتي» في آخر الصفحة. ← العودة إلى الدرس

أسئلة التقييم

تقييم الدرس 16: شجرة البحث الثنائية. إجاباتك تُحفظ تلقائيًّا على هذا الجهاز؛ أجب ثم اضغط «صحّح ورقتي».

1السؤال الأول: اختر الإجابة الصحيحة

1) عقدة بلا أبناء تسمى:
2) بعد إضافة 40 ثم 20 ثم 60 ثم 10، أين 10؟
3) ماذا يطبع المرور الداخلي للشجرة السابقة؟
4) أي ترتيب للإضافة يعطي أسوأ شجرة؟
5) أي التراكيب يعطي أصغر قيمة في O(1)؟

2السؤال الثاني: صح أم خطأ

1) في الشجرة الثنائية لكل عقدة ابنان على الأكثر.
الصواب: صح
2) شجرة البحث الثنائية متوازنة دائمًا مهما كان ترتيب الإضافة.
الصواب: خطأ
3) فهارس قواعد البيانات تقوم غالبًا على أشجار B-Tree.
الصواب: صح
4) البحث في BST متوازنة أبطأ من البحث الخطي.
الصواب: خطأ

3السؤال الثالث: أكمل الفراغات من القائمة المنسدلة

1) أصغر قيمة في BST في أقصى .
الإجابة: اليسار
2) ارتفاع BST متوازنة فيها n عقدة نحو .
الإجابة: log₂ n
3) المرور يسار ← عقدة ← يمين يسمى المرور .
الإجابة: الداخلي

4السؤال الرابع: أسئلة عملية

1) ما ناتج البرنامج؟

main.py
class Node:    def __init__(self, key):        self.key = key        self.left = None        self.right = None def insert(node, key):    if node is None:        return Node(key)    if key < node.key:        node.left = insert(node.left, key)    elif key > node.key:        node.right = insert(node.right, key)    return node def search(node, key):    steps = 0    while node is not None:        steps += 1        if key == node.key:            return True, steps        node = node.left if key < node.key else node.right    return False, steps def inorder(node, out):    if node is not None:        inorder(node.left, out)        out.append(node.key)        inorder(node.right, out)    return out root = Nonefor k in [8, 3, 10, 1, 6, 14]:    root = insert(root, k)print(inorder(root, []))print(search(root, 6))
الناتج الصحيح:
Shell×
[1, 3, 6, 8, 10, 14]
(True, 3)
أجب عن الأسئلة ثم اضغط «صحّح ورقتي».

📝 معلم؟ أرسل ملاحظة للمؤلف عن هذا الدرس