814. 二叉树剪枝
日期:2022/8/3
题目描述:给你二叉树的根结点 root ,此外树的每个结点的值要么是 0 ,要么是 1 。
返回移除了所有不包含 1 的子树的原二叉树。
节点 node 的子树为 node 本身加上所有 node 的后代。
示例:
输入:root = [1,null,0,0,1]
输出:[1,null,0,null,1]
解释:
只有红色节点满足条件“所有不包含 1 的子树”。 右图为返回的答案。
输入:root = [1,0,1,0,0,0,1]
输出:[1,null,1,null,1]
输入:root = [1,1,0,1,1,0,1,0]
输出:[1,1,0,1,1,null,1]
思路:
dfs
代码+解析:
class Solution {
public:
TreeNode* pruneTree(TreeNode* root) {
if(root == nullptr) return 0;
root->left = pruneTree(root->left);
root->right = pruneTree(root->right);
if(!(root->left || root->right || root->val)){
return nullptr;
}
return root;
}
};