From 92ed5f136d39c696efa59e9db2e3382cd9a97c0c Mon Sep 17 00:00:00 2001 From: fartem Date: Wed, 24 Apr 2024 08:44:36 +0300 Subject: [PATCH] 2024-04-24 v. 5.5.3: added "2331. Evaluate Boolean Binary Tree" --- README.md | 1 + leetcode-ruby.gemspec | 2 +- lib/easy/2331_evaluate_boolean_binary_tree.rb | 17 ++++++++ .../test_2331_evaluate_boolean_binary_tree.rb | 41 +++++++++++++++++++ 4 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 lib/easy/2331_evaluate_boolean_binary_tree.rb create mode 100644 test/easy/test_2331_evaluate_boolean_binary_tree.rb diff --git a/README.md b/README.md index 487b4ffe..657ad6e4 100644 --- a/README.md +++ b/README.md @@ -413,3 +413,4 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/). | 2315. Count Asterisks | [Link](https://leetcode.com/problems/count-asterisks/) | [Link](./lib/easy/2315_count_asterisks.rb) | | 2319. Check if Matrix Is X-Matrix | [Link](https://leetcode.com/problems/check-if-matrix-is-x-matrix/) | [Link](./lib/easy/2319_check_if_matrix_is_x_matrix.rb) | | 2325. Decode the Message | [Link](https://leetcode.com/problems/decode-the-message/) | [Link](./lib/easy/2325_decode_the_message.rb) | +| 2331. Evaluate Boolean Binary Tree | [Link](https://leetcode.com/problems/evaluate-boolean-binary-tree/) | [Link](./lib/easy/2331_evaluate_boolean_binary_tree.rb) | diff --git a/leetcode-ruby.gemspec b/leetcode-ruby.gemspec index 96ad73ae..4e0d2f75 100644 --- a/leetcode-ruby.gemspec +++ b/leetcode-ruby.gemspec @@ -5,7 +5,7 @@ require 'English' ::Gem::Specification.new do |s| s.required_ruby_version = '>= 3.0' s.name = 'leetcode-ruby' - s.version = '5.5.2' + s.version = '5.5.3' s.license = 'MIT' s.files = ::Dir['lib/**/*.rb'] + %w[bin/leetcode-ruby README.md LICENSE] s.executable = 'leetcode-ruby' diff --git a/lib/easy/2331_evaluate_boolean_binary_tree.rb b/lib/easy/2331_evaluate_boolean_binary_tree.rb new file mode 100644 index 00000000..557e8561 --- /dev/null +++ b/lib/easy/2331_evaluate_boolean_binary_tree.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +# https://leetcode.com/problems/evaluate-boolean-binary-tree/ +# @param {TreeNode} root +# @return {Boolean} +def evaluate_tree(root) + case root.val + when 0 + false + when 1 + true + when 2 + evaluate_tree(root.left) || evaluate_tree(root.right) + else + evaluate_tree(root.left) && evaluate_tree(root.right) + end +end diff --git a/test/easy/test_2331_evaluate_boolean_binary_tree.rb b/test/easy/test_2331_evaluate_boolean_binary_tree.rb new file mode 100644 index 00000000..e4135bfc --- /dev/null +++ b/test/easy/test_2331_evaluate_boolean_binary_tree.rb @@ -0,0 +1,41 @@ +# frozen_string_literal: true + +require_relative '../test_helper' +require_relative '../../lib/easy/2331_evaluate_boolean_binary_tree' +require_relative '../../lib/common/binary_tree' +require 'minitest/autorun' + +class EvaluateBooleanBinaryTreeTest < ::Minitest::Test + def test_default + assert( + evaluate_tree( + ::TreeNode.new( + 2, + ::TreeNode.new(1), + ::TreeNode.new( + 3, + ::TreeNode.new(0), + ::TreeNode.new(1) + ) + ) + ) + ) + assert( + !evaluate_tree( + ::TreeNode.new(0) + ) + ) + end + + def test_additional + assert( + !evaluate_tree( + ::TreeNode.new( + 3, + ::TreeNode.new(0), + ::TreeNode.new(1) + ) + ) + ) + end +end