2236. 判断根结点是否等于子结点之和
给你一个 二叉树 的根结点 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
原站题解
rust 解法, 执行用时: 0 ms, 内存消耗: 2.2 MB, 提交时间: 2023-09-12 15:35:53
// Definition for a binary tree node. // #[derive(Debug, PartialEq, Eq)] // pub struct TreeNode { // pub val: i32, // pub left: Option<Rc<RefCell<TreeNode>>>, // pub right: Option<Rc<RefCell<TreeNode>>>, // } // // impl TreeNode { // #[inline] // pub fn new(val: i32) -> Self { // TreeNode { // val, // left: None, // right: None // } // } // } use std::cell::RefCell; use std::rc::Rc; impl Solution { pub fn check_tree(root: Option<Rc<RefCell<TreeNode>>>) -> bool { let mut root = root; let mut root_node = root.unwrap(); let mut l_node = &root_node.borrow().left; let mut r_node = &root_node.borrow().right; let mut val = root_node.borrow().val; val == l_node.clone().unwrap().borrow().val + r_node.clone().unwrap().borrow().val } }
rust 解法, 执行用时: 0 ms, 内存消耗: 2.1 MB, 提交时间: 2023-09-12 15:34:47
// Definition for a binary tree node. // #[derive(Debug, PartialEq, Eq)] // pub struct TreeNode { // pub val: i32, // pub left: Option<Rc<RefCell<TreeNode>>>, // pub right: Option<Rc<RefCell<TreeNode>>>, // } // // impl TreeNode { // #[inline] // pub fn new(val: i32) -> Self { // TreeNode { // val, // left: None, // right: None // } // } // } use std::rc::Rc; use std::cell::RefCell; impl Solution { pub fn check_tree(root: Option<Rc<RefCell<TreeNode>>>) -> bool { match root { Some(root) => { let root = root.borrow(); if let (Some(left), Some(right)) = (&root.left, &root.right) { root.val == left.borrow().val + right.borrow().val } else { false } } None => true, } } }
rust 解法, 执行用时: 0 ms, 内存消耗: 2 MB, 提交时间: 2023-09-12 15:33:50
// Definition for a binary tree node. // #[derive(Debug, PartialEq, Eq)] // pub struct TreeNode { // pub val: i32, // pub left: Option<Rc<RefCell<TreeNode>>>, // pub right: Option<Rc<RefCell<TreeNode>>>, // } // // impl TreeNode { // #[inline] // pub fn new(val: i32) -> Self { // TreeNode { // val, // left: None, // right: None // } // } // } use std::rc::Rc; use std::cell::RefCell; impl Solution { pub fn check_tree(root: Option<Rc<RefCell<TreeNode>>>) -> bool { let root_node = root.as_ref().unwrap().borrow(); let left_node = root_node.left.as_ref().unwrap().borrow(); let right_node = root_node.right.as_ref().unwrap().borrow(); root_node.val == left_node.val + right_node.val } }
javascript 解法, 执行用时: 60 ms, 内存消耗: 41.5 MB, 提交时间: 2023-08-20 12:00:18
/** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.val = (val===undefined ? 0 : val) * this.left = (left===undefined ? null : left) * this.right = (right===undefined ? null : right) * } */ /** * @param {TreeNode} root * @return {boolean} */ var checkTree = function(root) { return root.val === root.left.val + root.right.val; };
cpp 解法, 执行用时: 0 ms, 内存消耗: 12.4 MB, 提交时间: 2023-08-20 11:59:14
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */ class Solution { public: bool checkTree(TreeNode* root) { return root->val == root->left->val + root->right->val; } };
java 解法, 执行用时: 0 ms, 内存消耗: 39 MB, 提交时间: 2023-08-20 11:58:27
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */ class Solution { public boolean checkTree(TreeNode root) { return root.val == root.left.val + root.right.val; } }
golang 解法, 执行用时: 0 ms, 内存消耗: 1.9 MB, 提交时间: 2023-08-20 11:58:04
/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */ func checkTree(root *TreeNode) bool { return root.Val == root.Left.Val + root.Right.Val }
python3 解法, 执行用时: 32 ms, 内存消耗: 14.8 MB, 提交时间: 2022-05-30 11:14:37
# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def checkTree(self, root: Optional[TreeNode]) -> bool: return root.val == root.left.val + root.right.val