1110. Delete Nodes And Return Forest
Difficulty: Medium
Topics: Array
, Hash Table
, Tree
, Depth-First Search
, Binary Tree
Given the root
of a binary tree, each node in the tree has a distinct value.
After deleting all nodes with a value in to_delete
, we are left with a forest (a disjoint union of trees).
Return the roots of the trees in the remaining forest. You may return the result in any order.
Example 1:
- Input: root = [1,2,3,4,5,6,7], to_delete = [3,5]
- Output: [[1,2,null,4],[6],[7]]
Example 2:
- Input: root = [1,2,4,null,3], to_delete = [3]
- Output: [[1,2,4]]
Constraints:
- The number of nodes in the given tree is at most
1000
. - Each node has a distinct value between
1
and1000
. to_delete.length <= 1000
-
to_delete
contains distinct values between1
and1000
.
Solution:
To solve this problem, we can follow these steps:
- Traverse the tree using a helper function.
- If a node is marked for deletion, add its children to the result forest if they are not null.
- Recursively delete nodes and adjust the tree accordingly.
- Return the list of root nodes of the remaining forest.
Let's implement this solution in PHP: 1110. Delete Nodes And Return Forest
<?php
/**
* @param TreeNode $root
* @param Integer[] $to_delete
* @return TreeNode[]
*/
function delNodes($root, $to_delete) {
...
...
...
/**
* go to ./solution.php
*/
}
/**
* @param $node
* @param $forest
* @param $to_delete_set
* @return mixed|null
*/
function helper($node, &$forest, $to_delete_set) {
...
...
...
/**
* go to ./solution.php
*/
}
// Example usage:
$root = buildTree([1, 2, 3, 4, 5, 6, 7]);
$to_delete = [3, 5];
$forestRoot = new Solution();
$forest = $forestRoot->delNodes($root, $to_delete);
function printForest($forest) {
foreach ($forest as $tree) {
printTree($tree);
echo "\n";
}
}
function printTree($node) {
if ($node === null) {
return;
}
echo $node->val . " ";
printTree($node->left);
printTree($node->right);
}
printForest($forest);
?>
Explanation:
- TreeNode Class: Defines the structure of a tree node.
-
delNodes Function: Main function to delete specified nodes and return the forest.
- $to_delete_set: Converts the list of nodes to delete into a set for quick lookups.
- helper Function: Recursively processes each node, checking if it should be deleted. If a node is deleted, its children are added to the forest.
- buildTree Function: Helper function to build a binary tree from a list representation (used for testing).
- printForest Function: Helper function to print the trees in the forest (used for testing).
Contact Links
If you found this series helpful, please consider giving the repository a star on GitHub or sharing the post on your favorite social networks 😍. Your support would mean a lot to me!
If you want more helpful content like this, feel free to follow me:
Top comments (0)