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

โปรแกรมลบใบไม้ที่มีค่าเป็นเลขคู่ออกจากต้นไม้ไบนารีใน Python

สมมติว่ามีต้นไม้ไบนารี เราจะลบใบไม้ที่มีค่าเป็นเลขคู่ซ้ำๆ หลังจากลบหมด ถ้ามีเพียงรากที่เป็นเลขคู่ จะถูกลบด้วย

เช่น ถ้าอินพุตเป็นต้นไม้ดังภาพ ผลลัพธ์จะเป็นต้นไม้ที่เหลือหลังลบใบไม้เลขคู่

ขั้นตอนการแก้ปัญหา

  • กำหนดฟังก์ชัน solve() รับ root
    • ถ้า root เป็น null คืนค่า null
    • left of root := solve(left of root)
    • right of root := solve(right of root)
    • ถ้า root เป็นใบไม้และข้อมูลของ root เป็นเลขคู่ คืนค่า null
    • คืนค่า root

ตัวอย่างโค้ด

class TreeNode:
    def __init__(self, data, left=None, right=None):
        self.data = data
        self.left = left
        self.right = right

def inorder(root):
    if root:
        inorder(root.left)
        print(root.data, end=', ')
        inorder(root.right)

class Solution:
    def solve(self, root):
        if not root:
            return None
        root.left = self.solve(root.left)
        root.right = self.solve(root.right)
        if not root.left and not root.right and root.data % 2 == 0:
            return None
        return root

ob = Solution()
root = TreeNode(13)
root.left = TreeNode(12)
root.right = TreeNode(14)
root.right.left = TreeNode(16)
root.right.right = TreeNode(22)
root.right.left.left = TreeNode(4)
root.right.left.right = TreeNode(7)
ob.solve(root)
inorder(root)

อินพุต

root = TreeNode(13) root.left = TreeNode(12) root.right = TreeNode(14) root.right.left = TreeNode(16) root.right.right = TreeNode(22) root.right.left.left = TreeNode(4) root.right.left.right = TreeNode(7)

เอาต์พุต

13, 16, 7, 14,