给你二叉树的根结点 root
,此外树的每个结点的值要么是 0
,要么是 1
。
返回移除了所有不包含 1
的子树的原二叉树。
节点 node
的子树为 node
本身加上所有 node
的后代。
示例 1:
![图片[1]-814. 二叉树剪枝 - it同学-it同学](https://www.ittx.cn/wp-content/uploads/2022/07/image-1024x287.png)
输入:root = [1,null,0,0,1]
输出:[1,null,0,null,1]
解释:
只有红色节点满足条件“所有不包含 1 的子树”。 右图为返回的答案。
示例 2:
![图片[2]-814. 二叉树剪枝 - it同学-it同学](https://www.ittx.cn/wp-content/uploads/2022/07/image-1-1024x236.png)
输入:root = [1,0,1,0,0,0,1]
输出:[1,null,1,null,1]
C语言代码演示
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
//直接从叶子节点开始删除所有值为0的节点
struct TreeNode* pruneTree(struct TreeNode* root){
if(!root){ //退出递归
return NULL;
}
root->left=pruneTree(root->left);
root->right=pruneTree(root->right);
if(!root->left&&!root->right&&!root->val){
return NULL;
}
return root;
}
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
喜欢就支持一下吧