解题思路:
一句话:当一个节点的左(右)节点全是0,那么将这个节点的左(右)节点设置为NULL。若不是,那么将这个节点的左节点和 右节点进行递归。
AC解:
class Solution {
public:
TreeNode * pruneTree(TreeNode* root) {
if (root == NULL)
return NULL;
Dele_Tree(root);
return root;
}
void Dele_Tree(TreeNode* Now_root)
{
if (Now_root == NULL)
return;
if (IsZero(Now_root->left))
Now_root->left = NULL;
else
Dele_Tree(Now_root->left);
if (IsZero(Now_root->right))
Now_root->right = NULL;
else
Dele_Tree(Now_root->right);
return;
}
bool IsZero(TreeNode* Root)
{
if (Root == NULL)
return true;
if (Root->val == 1)
return false;
return (IsZero(Root->left) && IsZero(Root->right));
}
};