vlambda博客
学习文章列表

【每日编程-83期】二叉树剪枝

今日问题:

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

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

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

示例1:

输入:[1,null,0,0,1]

输出[1,null,0,null,1]

解释:

只有红色节点满足条件所有不包含 1 的子树

右图为返回的答案。



示例2:

输入:[1,0,1,0,0,0,1]

输出[1,null,1,null,1]

【每日编程-83期】二叉树剪枝


示例3:

输入:[1,1,0,1,1,0,1,0]

输出[1,1,0,1,1,null,1]

【每日编程-83期】二叉树剪枝

说明:

  • 给定的二叉树最多有 100 个节点。

  • 每个节点的值只会为 0  1 

解决方法:

C++代码:

【每日编程-83期】二叉树剪枝


C代码:

【每日编程-83期】二叉树剪枝


Java代码:





明日题目预告:

二叉树的坡度

给定一个二叉树,计算整个树的坡度。

一个树的节点的坡度定义即为,该节点左子树的结点之和和右子树结点之和的差的绝对值。空结点的的坡度是0

整个树的坡度就是其所有节点的坡度之和。

示例:

输入:

输出: 1

解释:

结点的坡度 2 : 0

结点的坡度 3 : 0

结点的坡度 1 : |2-3|= 1

树的坡度 : 0 + 0 +1 = 1

注意:

  1. 任何子树的结点的和不会超过32位整数的范围。

  2. 坡度的值不会超过32位整数的范围。

 

 





更多编程题。

请至首页->每日系列->每日编程