Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โหนดไม่เพียงพอในเส้นทางรูทถึงใบไม้ใน Python


สมมติว่าเรามีต้นไม้ไบนารี โหนดเรียกว่าไม่เพียงพอหากทุกเส้นทางจากรากถึงปลายที่ตัดกับโหนดนี้มีผลรวมน้อยกว่าขีด จำกัด อย่างเคร่งครัด เราต้องลบโหนดที่ไม่เพียงพอทั้งหมดพร้อมกัน และส่งคืนรูทของไบนารีทรีที่เป็นผลลัพธ์ ดังนั้นถ้าต้นไม้นั้นเหมือน และขีดจำกัดคือ 1 −

โหนดไม่เพียงพอในเส้นทางรูทถึงใบไม้ใน Python

จากนั้นต้นไม้ผลลัพธ์จะเป็น −

โหนดไม่เพียงพอในเส้นทางรูทถึงใบไม้ใน Python

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • กำหนดวิธีการแก้ปัญหา() ซึ่งจะเริ่มต้นและจำกัด
  • ถ้าโหนดไม่มีแผนผังย่อยซ้ายและขวา
    • ถ้าค่าของ root น้อยกว่า 1 ให้คืนค่า null มิฉะนั้น root
  • ถ้ารูทออกจากทรีย่อยแล้ว ทางซ้ายของรูท :=แก้ (ด้านซ้ายของรูท ขีดจำกัด – ค่าของรูท)
  • ถ้ารูทมีทรีย่อยที่ถูกต้อง ให้ทางขวาของรูท :=แก้ (ทางขวาของรูท ขีดจำกัด – ค่าของรูท)
  • หากรูทมีทรีย่อยด้านซ้าย หรือทรีย่อยด้านขวาหรือทั้งสองอย่าง ให้คืนค่ารูท มิฉะนั้นจะเป็นค่าว่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

class Solution(object):
   def sufficientSubset(self, root, limit):
      """
      :type root: TreeNode
      :type limit: int
      :rtype: TreeNode
      """
      if not root.left and not root.right:
         return None if root.val<limit else root
      if root.left:
         root.left= self.sufficientSubset(root.left,limit-root.val)
      if root.right:
         root.right = self.sufficientSubset(root.right,limit-root.val)
      return root if root.left or root.right else None

อินพุต

[1,2,3,4,-99,-99,7,8,9,-99,-99,12,13,-99,14]
1

ผลลัพธ์

[1,2,3,4,null,null,7,8,9,null,14]