Easy
题目描述
给你一个二叉树的根节点 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
解题思路
这道题目非常简单直观,是一个入门级的二叉树问题。
解题思路:
由于题目明确说明树只有恰好 3 个节点(根节点、左子节点、右子节点),我们只需要:
- 获取根节点的值
- 获取左子节点的值
- 获取右子节点的值
- 判断根节点的值是否等于左右子节点值的和
由于题目保证了树的结构,我们不需要考虑空指针的情况,可以直接访问 root.left.val 和 root.right.val。
算法步骤:
- 直接比较
root.val与root.left.val + root.right.val是否相等 - 返回比较结果
这是一个一行代码就能解决的问题,体现了二叉树最基础的节点访问操作。
代码实现
class Solution {
public:
bool checkTree(TreeNode* root) {
return root->val == root->left->val + root->right->val;
}
};
class Solution:
def checkTree(self, root: Optional[TreeNode]) -> bool:
return root.val == root.left.val + root.right.val
public class Solution {
public bool CheckTree(TreeNode root) {
return root.val == root.left.val + root.right.val;
}
}
var checkTree = function(root) {
return root.val === root.left.val + root.right.val;
};
复杂度分析
| 复杂度类型 | 复杂度 | 说明 |
|---|---|---|
| 时间复杂度 | O(1) | 只需要访问三个节点并进行一次比较运算 |
| 空间复杂度 | O(1) | 没有使用额外的存储空间 |