1,题目要求
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.)
删除一棵树中额所有的叶子节点为0或孩子全为0的节点。
2,题目思路
对于这道题,用递归的办法,依次从叶子节点向根节点进行遍历,遇到满足条件的节点就置位NULL。
删除节点的办法:root->left = NULL,这样就把左孩子给删除了。
3,程序源码
class Solution {
public:
TreeNode* pruneTree(TreeNode* root) {
if(root == NULL) return NULL;
root->left = pruneTree(root->left);
root->right = pruneTree(root->right);
if(root->left == NULL && root->right == NULL && root->val == 0) return NULL;
return root;
}
};