Similar Problems
Similar Problems not available
Delete Leaves With A Given Value - Leetcode Solution
Companies:
LeetCode: Delete Leaves With A Given Value Leetcode Solution
Difficulty: Medium
Topics: tree binary-tree depth-first-search
Problem Statement:
Given a binary tree root and an integer target, delete all the leaf nodes with value target.
Note that once you delete a leaf node with value target, if it's parent node becomes a leaf node and has the value target, it should also be deleted (you need to continue doing that until you can't).
Example 1:
Input: root = [1,2,3,2,null,2,4], target = 2 Output: [1,null,3,null,4] Explanation: Leaf nodes in green with value (target = 2) are removed (Picture in the above link). Example 2:
Input: root = [1,3,3,3,2], target = 3 Output: [1,3,null,null,2] Example 3:
Input: root = [1,2,null,2,null,2], target = 2 Output: [1] Explanation: Leaf nodes in green with value (target = 2) are removed.
Approach:
- We'll recurse on the left subtree and right subtree, and then check that if the root has target value and is a leaf node, then return null.
- If its left and right subtrees are null, and the root of the current subtree has the target value, return null.
- If the root is null, return null.
- Return the current root.
Code:
/**
- Definition for a binary tree node.
- struct TreeNode {
-
int val;
-
TreeNode *left;
-
TreeNode *right;
-
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
- }; / class Solution { public: TreeNode removeLeafNodes(TreeNode* root, int target) { if(!root) return nullptr; root->left = removeLeafNodes(root->left,target); root->right = removeLeafNodes(root->right,target); if(!root->left && !root->right && root->val == target) return nullptr; return root; } };
Time Complexity: O(n) where n is the number of nodes in the binary tree.
Space Complexity: O(H), where H is the height of the binary tree.
Delete Leaves With A Given Value Solution Code
1