Leetcode 814. 二叉树剪枝

Posted DCREN

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode 814. 二叉树剪枝相关的知识,希望对你有一定的参考价值。

题目链接

https://leetcode-cn.com/problems/binary-tree-pruning/description/

题目描述

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

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

( 节点 X 的子树为 X 本身,以及所有 X 的后代。)

示例1:
输入: [1,null,0,0,1]
输出: [1,null,0,null,1]
 

示例2:
输入: [1,0,1,0,0,0,1]
输出: [1,null,1,null,1]



示例3:
输入: [1,1,0,1,1,0,1,0]
输出: [1,1,0,1,1,null,1]

说明:

  • 给定的二叉树最多有 100 个节点。
  • 每个节点的值只会为 0 或 1 。

题解

递归遍历,直到叶子节点,然后再判断是否需要删除,如果需要删除,就返回null,如果不是就直接返回。

代码

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
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;
    }
}

以上是关于Leetcode 814. 二叉树剪枝的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 814. 二叉树剪枝

LeetCode 814 二叉树剪枝[dfs] HERODING的LeetCode之路

leetcode 814. 二叉树剪枝 时间击败100.00% 内存击败84.62%

LeetCode 0814. 二叉树剪枝

每日一题814. 二叉树剪枝

582,DFS解二叉树剪枝