814. 二叉树剪枝

给你二叉树的根结点 root ,此外树的每个结点的值要么是 0 ,要么是 1

返回移除了所有不包含 1 的子树的原二叉树。

节点 node 的子树为 node 本身加上所有 node 的后代。

示例 1:

图片[1]-814. 二叉树剪枝-it同学
输入:root = [1,null,0,0,1]
输出:[1,null,0,null,1]
解释:
只有红色节点满足条件“所有不包含 1 的子树”。 右图为返回的答案。

示例 2:

图片[2]-814. 二叉树剪枝-it同学
输入: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
喜欢就支持一下吧
点赞10 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容