สมมติว่าเรามีไบนารีทรีที่มีค่าบางอย่าง เราต้องหาผลรวมของค่าทั้งหมดในทรี
ดังนั้นหากอินพุตเป็นแบบ
แล้วผลลัพธ์จะเป็น 14
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
กำหนดฟังก์ชัน recurse() นี่จะใช้โหนด
-
val :=ค่าของโหนด
-
หากโหนดที่เหลือไม่เป็นโมฆะ
-
val :=val + recurse (ด้านซ้ายของโหนด)
-
-
ถ้าทางขวาของโหนดไม่เป็นโมฆะ
-
val :=val + recurse(ทางขวาของโหนด)
-
-
ค่าส่งคืน
-
จากวิธีหลัก ให้ทำดังนี้ −
-
ถ้าไม่ใช่รูทก็คือไม่ใช่ศูนย์ ดังนั้น
-
คืนค่า 0
-
-
ส่งคืนการเรียกซ้ำ (รูท)
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class TreeNode: def __init__(self, data, left = None, right = None): self.val = data self.left = left self.right = right class Solution: def recurse(self, node): val = node.val if node.left: val += self.recurse(node.left) if node.right: val += self.recurse(node.right) return val def solve(self, root): if not root: return 0 return self.recurse(root) ob = Solution() root = TreeNode(2) root.right = TreeNode(4) root.right.left = TreeNode(3) root.right.right = TreeNode(5) print(ob.solve(root))
อินพุต
root = TreeNode(2) root.right = TreeNode(4) root.right.left = TreeNode(3) root.right.right = TreeNode(5)
ผลลัพธ์
14