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 个节点(根节点、左子节点、右子节点),我们只需要:

  1. 获取根节点的值
  2. 获取左子节点的值
  3. 获取右子节点的值
  4. 判断根节点的值是否等于左右子节点值的和

由于题目保证了树的结构,我们不需要考虑空指针的情况,可以直接访问 root.left.valroot.right.val

算法步骤:

  • 直接比较 root.valroot.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)没有使用额外的存储空间