- Related Questions & Answers
- Program to remove all islands which are completely surrounded by water in Python
- Program to remove all nodes with only one child from a binary tree in Python?
- Count BST nodes that lie in a given range in C++
- Python Program to Find All Numbers which are Odd and Palindromes Between a Range of Numbers
- How to remove all child nodes from a parent in jQuery?
- Program to find number of nodes in a range in Python
- 8085 program to take all numbers which are in range 3CH and 64H in an array
- Program to make almost BST to exact BST in python
- How to remove all child nodes from a parent using jQuery?
- Program to remove all nodes of a linked list whose value is same as in Python
- How to remove all child nodes from a parent node using jQuery?
- Python program to remove all duplicates word from a given sentence.
- Program to check whether a binary tree is BST or not in Python
- What does immutable mean? Which Python types are mutable and which are not?
- Python Program to Find all Numbers in a Range which are Perfect Squares and Sum of all Digits in the Number is Less than 10

- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who

Suppose we have a BST, an two values low and high, we have to delete all nodes that are not between [low, high] (inclusive).

So, if the input is like

low = 7 high = 10, then the output will be

To solve this, we will follow these steps −

- Define a function solve() . This will take root, low, high
- if root is null, then
- return

- if low > data of root, then
- return solve(right of root, low, high)

- if high < data of root, then
- return solve(left of root, low, high)

- right of root := solve(right of root, low, high)
- left of root := solve(left of root, low, high)
- return root

Let us see the following implementation to get better understanding −

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,

Advertisements