判断根结点是否等于子结点之和
难度:
标签:
题目描述
给你一个 二叉树 的根结点 root
,该二叉树由恰好 3
个结点组成:根结点、左子结点和右子结点。
如果根结点值等于两个子结点值之和,返回 true
,否则返回 false
。
示例 1:

输入:root = [10,4,6] 输出:true 解释:根结点、左子结点和右子结点的值分别是 10 、4 和 6 。 由于 10 等于 4 + 6 ,因此返回 true 。
示例 2:

输入:root = [5,3,1] 输出:false 解释:根结点、左子结点和右子结点的值分别是 5 、3 和 1 。 由于 5 不等于 3 + 1 ,因此返回 false 。
提示:
- 树只包含根结点、左子结点和右子结点
-100 <= Node.val <= 100
代码结果
运行时间: 16 ms, 内存: 16.6 MB
/*
* 思路:
* 给定一个包含3个节点的二叉树,判断根节点的值是否等于其左子节点和右子节点值之和。
* 我们可以使用Java Stream来简化操作,尽管在这种简单的场景下用Stream有些过度设计。
*/
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
import java.util.stream.Stream;
public class Solution {
public boolean checkTree(TreeNode root) {
// 使用Stream进行值的求和并比较
return Stream.of(root.left.val, root.right.val).mapToInt(Integer::intValue).sum() == root.val;
}
}
解释
方法:
该题解直接利用了二叉树的定义,通过访问根节点及其左右子节点的值来判断根节点的值是否等于左右子节点值的和。方法简洁,直接比较根节点的值与左右子节点值之和即可得出结果。
时间复杂度:
O(1)
空间复杂度:
O(1)
代码细节讲解
🦆
在`TreeNode`类定义中,如果左子节点或右子节点为None,`checkTree`函数是否能够正确处理这种情况?
▷🦆
题目假设树恰好包含3个节点,但如果实际输入不符合这个假设,例如根节点下只有一个子节点,`checkTree`函数会如何响应?
▷🦆
算法在处理可能的输入错误或异常情况时是否有足够的鲁棒性,例如输入的根节点是None时应如何处理?
▷🦆
在本题解中,`TreeNode`的构造函数允许节点值为0,那么在特定情况下(例如所有节点值为0),解决方案是否仍然有效?
▷