
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Delete Nodes and Return Forest in Python
Suppose we have the root of a binary tree, each node in the tree has a unique value. After removing all nodes with a value in to_delete, we are left with a forest. We have to find the roots of the trees in the remaining forest. So if the input is like
if the to_delete array is like [3,5], then the output will be
To solve this, we will follow these steps −
- Define an array res
- Define a method solve(), this will take node, to_delete array and a Boolean type info to which is telling that the node is root or not. The method will act like below −
- if node is null, then return null
- flag := true if value of node is in to_delete array
- if flag is false and is_root is true, then insert node into res
- left of node := solve(left of node, to_delete, flag)
- right of node := solve(right of node, to_delete, flag)
- return none when flag is set, otherwise false
- Call the solve() method from the main method like solve(node, to_delete, true)
Let us see the following implementation to get better understanding −
Example
class Solution(object): def delNodes(self, root, to_delete): """ :type root: TreeNode :type to_delete: List[int] :rtype: List[TreeNode] """ to_delete = set(to_delete) self.res = [] self.solve(root,to_delete,True) return self.res def solve(self,node,to_delete,is_root): if not node: return None flag = node.val in to_delete if not flag and is_root: self.res.append(node) node.left = self.solve(node.left,to_delete,flag) node.right = self.solve(node.right,to_delete,flag) return None if flag else node
Input
[1,2,3,4,5,6,7] [3,5]
Output
[[1,2,null,4],[6],[7]]
Advertisements