问题描述
给定二叉树根结点 root ,此外树的每个结点的值要么是 0,要么是 1。
返回移除了所有不包含 1 的子树的原二叉树。
( 节点 X 的子树为 X 本身,以及所有 X 的后代。)
Example
示例:
输入: [1,1,0,1,1,0,1,0]
输出: [1,1,0,1,1,null,1]
解释:
只有红色节点满足条件“所有不包含 1 的子树”。
右图为返回的答案。
Note
- 给定的二叉树最多有 100 个节点。
- 每个节点的值只会为 0 或 1 。
题目链接:814. 二叉树剪枝 (难度:中等)
思路
题目的要求其实就是要你递归地删除所有值为 0 的叶子节点。显然如果一棵树中不包含值为 1 的节点,则递归删除值为 0 的叶子节点最终会删除掉这一整棵树。若一棵树中包含值为 1 的节点,则该节点的所有祖先节点哪怕值为 0 也不会被删除(因为它破坏了叶节点这个条件)。
代码
1 | class Solution { |
执行结果: 4 ms 9.5 MB
- 本文作者: Phoenix
- 本文链接: https://phoenix500526.github.io/2020/06/24/Leetcode-814-二叉树剪枝-树的删除-后序遍历/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!
