Skip to content

Commit

Permalink
Merge pull request #184 from fartem/700_Search_in_a_Binary_Search_Tree
Browse files Browse the repository at this point in the history
2023-01-31 v. 1.3.5: added "700. Search in a Binary Search Tree"
  • Loading branch information
fartem authored Jul 31, 2023
2 parents 34ef4c7 + a3ca868 commit b82f7a9
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 1 deletion.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -140,3 +140,4 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/).
| 680. Valid Palindrome II | [Link](https://leetcode.com/problems/valid-palindrome-ii/) | [Link](./lib/easy/680_valid_palindrome_ii.rb) |
| 682. Baseball Game | [Link](https://leetcode.com/problems/baseball-game/) | [Link](./lib/easy/682_baseball_game.rb) |
| 693. Binary Number with Alternating Bits | [Link](https://leetcode.com/problems/binary-number-with-alternating-bits/) | [Link](./lib/easy/693_binary_number_with_alternating_bits.rb) |
| 700. Search in a Binary Search Tree | [Link](https://leetcode.com/problems/search-in-a-binary-search-tree/) | [Link](./lib/easy/700_search_in_a_binary_search_tree.rb) |
2 changes: 1 addition & 1 deletion leetcode-ruby.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ require 'English'
::Gem::Specification.new do |s|
s.required_ruby_version = '>= 3.0'
s.name = 'leetcode-ruby'
s.version = '1.3.4'
s.version = '1.3.5'
s.license = 'MIT'
s.files = ::Dir['lib/**/*.rb'] + %w[bin/leetcode-ruby README.md LICENSE]
s.executable = 'leetcode-ruby'
Expand Down
16 changes: 16 additions & 0 deletions lib/easy/700_search_in_a_binary_search_tree.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# frozen_string_literal: true

# https://leetcode.com/problems/search-in-a-binary-search-tree/
# @param {TreeNode} root
# @param {Integer} val
# @return {TreeNode}
def search_bst(root, val)
return if root.nil?

return root if root.val == val

left = search_bst(root.left, val)
right = search_bst(root.right, val)

left.nil? ? right : left
end
44 changes: 44 additions & 0 deletions test/easy/test_700_search_in_a_binary_search_tree.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# frozen_string_literal: true

require_relative '../test_helper'
require_relative '../../lib/common/binary_tree'
require_relative '../../lib/easy/700_search_in_a_binary_search_tree'
require 'minitest/autorun'

class SearchInABinarySearchTreeTest < ::Minitest::Test
def test_default
assert_equal(
::TreeNode.new(
2,
::TreeNode.new(1),
::TreeNode.new(3)
),
search_bst(
::TreeNode.new(
4,
::TreeNode.new(
2,
::TreeNode.new(1),
::TreeNode.new(3)
),
::TreeNode.new(7)
),
2
)
)
assert_nil(
search_bst(
::TreeNode.new(
4,
::TreeNode.new(
2,
::TreeNode.new(1),
::TreeNode.new(3)
),
::TreeNode.new(7)
),
5
)
)
end
end

0 comments on commit b82f7a9

Please sign in to comment.