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