Skip to content

Files

Latest commit

e262993 · Aug 18, 2019

History

History
This branch is 2352 commits behind lzl124631x/LeetCode:master.

814. Binary Tree Pruning

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Aug 18, 2019
Aug 18, 2019

We are given the head node root of a binary tree, where additionally every node's value is either a 0 or a 1.

Return the same tree where every subtree (of the given tree) not containing a 1 has been removed.

(Recall that the subtree of a node X is X, plus every node that is a descendant of X.)

Example 1:
Input: [1,null,0,0,1]
Output: [1,null,0,null,1]
 
Explanation: 
Only the red nodes satisfy the property "every subtree not containing a 1".
The diagram on the right represents the answer.


Example 2:
Input: [1,0,1,0,0,0,1]
Output: [1,null,1,null,1]



Example 3:
Input: [1,1,0,1,1,0,1,0]
Output: [1,1,0,1,1,null,1]



Note:

  • The binary tree will have at most 100 nodes.
  • The value of each node will only be 0 or 1.

Companies:
Twitter

Related Topics:
Tree

Solution 1.

// OJ: https://leetcode.com/problems/binary-tree-pruning/
// Author: github.com/lzl124631x
// Time: O(N)
// Space: O(logN)
class Solution {
public:
    TreeNode* pruneTree(TreeNode* root) {
        if (!root) return NULL;
        root->left = pruneTree(root->left);
        root->right = pruneTree(root->right);
        return !root->left && !root->right && !root->val ? NULL : root;
    }
};