DFS บน Binary Tree แบบ Pre-order (Root, Left, Right) พร้อมแสดงสถานะ entering/at/leaving แต่ละโหนด
ตัวอย่างโค้ด
class Node:
def __init__(self, key):
self.key = key
self.left = None
self.right = None
def dfs(self):
print(f'Entering {self.key}...')
if self.left:
self.left.dfs()
print(f'At {self.key}...')
if self.right:
self.right.dfs()
print(f'Leaving {self.key}...')
# Build tree
root = Node(5)
root.left = Node(6)
root.right = Node(8)
print("DFS Traversal:")
root.dfs()ผลลัพธ์
DFS Traversal: Entering 5... Entering 6... At 6... Leaving 6... At 5... Entering 8... At 8... Leaving 8... Leaving 5...
คำอธิบาย
Pre-order: พิมพ์ "Entering" ก่อนไปลูกซ้าย
หลังกลับจากลูกซ้าย พิมพ์ "At" (ระหว่าง left และ right)
หลังกลับจากลูกขวา พิมพ์ "Leaving"
แสดง call stack visualization ของ recursion
โครงสร้าง: 5 → left=6, right=8