48 lines
1.4 KiB
Markdown
48 lines
1.4 KiB
Markdown
---
|
|
title: Breadth-First Search
|
|
localeTitle: اتساع البحث الأول
|
|
---
|
|
## اتساع البحث الأول
|
|
|
|
دعونا أولا تحديد فئة `Tree` لاستخدامها لتنفيذ خوارزمية Breadth First Search.
|
|
|
|
`class Tree:
|
|
def __init__(self, x):
|
|
self.val = x
|
|
self.left = None
|
|
self.right = None
|
|
`
|
|
|
|
تنتقل خوارزمية البحث الأولى والاتساع من مستوى إلى آخر بدءًا من جذر الشجرة. سنستخدم `queue` لهذا الغرض.
|
|
|
|
`def bfs(root_node):
|
|
queue = [root_node]
|
|
|
|
while queue:
|
|
top_element = queue.pop()
|
|
print("Node processed: ",top_element)
|
|
|
|
if top_element.left:
|
|
queue.append(top_element.left)
|
|
|
|
if top_element.right:
|
|
queue.append(top_element.right)
|
|
`
|
|
|
|
يمكننا بسهولة تعديل التعليمات البرمجية المذكورة أعلاه لطباعة مستوى كل عقدة كذلك.
|
|
|
|
`def bfs(root_node):
|
|
queue = [(root_node, 0)]
|
|
|
|
while queue:
|
|
top_element, level = queue.pop()
|
|
print("Node processed: {} at level {}".format(top_element, level))
|
|
|
|
if top_element.left:
|
|
queue.append((top_element.left, level + 1))
|
|
|
|
if top_element.right:
|
|
queue.append((top_element.right, level + 1))
|
|
`
|
|
|
|
| التعقيد | الوقت | الفضاء | ----- | ------ | ------ | | BFS | ن | ن | |