मान लीजिए कि हमारे पास एक बीएसटी है, दो मान निम्न और उच्च हैं, हमें उन सभी नोड्स को हटाना होगा जो [निम्न, उच्च] (समावेशी) के बीच नहीं हैं।
तो, अगर इनपुट पसंद है
कम =7 उच्च =10, तो आउटपुट होगा
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- एक फ़ंक्शन को हल करें() परिभाषित करें। यह जड़ लेगा, निम्न, उच्च
- यदि रूट रिक्त है, तो
- वापसी
- यदि कम है> रूट का डेटा, तो
- रिटर्न सॉल्व (रूट का राइट, लो, हाई)
- यदि उच्च <रूट का डेटा है, तो
- वापसी हल (रूट के बाएं, कम, उच्च)
- रूट का दायां :=हल करें (रूट का दायां, निचला, ऊंचा)
- रूट का बायां:=हल करें (रूट का बायां, निचला, ऊंचा)
- रिटर्न रूट
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class TreeNode: def __init__(self, data, left = None, right = None): self.data = data self.left = left self.right = right def print_tree(root): if root is not None: print_tree(root.left) print(root.data, end = ', ') print_tree(root.right) class Solution: def solve(self, root, low, high): if not root: return if low > root.data: return self.solve(root.right,low,high) if high < root.data: return self.solve(root.left,low,high) root.right = self.solve(root.right,low,high) root.left = self.solve(root.left,low,high) return root ob = Solution() root = TreeNode(5) root.left = TreeNode(1) root.right = TreeNode(9) root.right.left = TreeNode(7) root.right.right = TreeNode(10) root.right.left.left = TreeNode(6) root.right.left.right = TreeNode(8) low = 7 high = 10 ret = ob.solve(root, low, high) print_tree(ret)
इनपुट
root = TreeNode(5) root.left = TreeNode(1) root.right = TreeNode(9) root.right.left = TreeNode(7) root.right.right = TreeNode(10) root.right.left.left = TreeNode(6) root.right.left.right = TreeNode(8) low = 7 high = 10
आउटपुट
7, 8, 9, 10,