BST ga yangi element kiritish uchun rekursiv yondashuv ishlatamiz:
None bo'lsa — yangi node shu yerga joylashadiclass BSTNode:
def __init__(self, data):
self.data = data
self.left = None
self.right = None
def kiritish(root, data):
if root is None:
return BSTNode(data)
if data < root.data:
root.left = kiritish(root.left, data)
elif data > root.data:
root.right = kiritish(root.right, data)
return rootIshlatamiz:
root = None
for son in [10, 5, 15, 3, 7]:
root = kiritish(root, son)Daraxtni chop etish:
def chop_etish(node):
if node is None:
return
chap = node.left.data if node.left else "-"
ong = node.right.data if node.right else "-"
print(f"{node.data} | chap: {chap}, o'ng: {ong}")
chop_etish(node.left)
chop_etish(node.right)
chop_etish(root)Natija:
10 | chap: 5, o'ng: 15
5 | chap: 3, o'ng: 7
3 | chap: —, o'ng: —
7 | chap: —, o'ng: —
15 | chap: —, o'ng: —Har qator node va uning bolalarini ko'rsatadi.
Har element qayerga joylashishi:
# 10 → root bo'ldi
# 5: 5 < 10 → chapga
# 15: 15 > 10 → o'ngga
# 3: 3 < 10 → chapga; 3 < 5 → yanada chapga
# 7: 7 < 10 → chapga; 7 > 5 → o'nggaMuhim qoidalar:
BST ga element kiritish
Sonlarni kiriting, BST yarating va daraxt tuzilmasini chop eting.