Skip to content

Commit 808a785

Browse files
authored
Merge pull request #797 from fartem/538-Convert-BST-to-Greater-Tree
2024-12-09 v. 7.2.6: added "538. Convert BST to Greater Tree"
2 parents 8e1f0db + 3d38b31 commit 808a785

File tree

4 files changed

+107
-1
lines changed

4 files changed

+107
-1
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -591,3 +591,4 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/).
591591
| 523. Continuous Subarray Sum | [Link](https://leetcode.com/problems/continuous-subarray-sum/) | [Link](./lib/medium/523_continuous_subarray_sum.rb) | [Link](./test/medium/test_523_continuous_subarray_sum.rb) |
592592
| 524. Longest Word in Dictionary through Deleting | [Link](https://leetcode.com/problems/longest-word-in-dictionary-through-deleting/) | [Link](./lib/medium/524_longest_word_in_dictionary_through_deleting.rb) | [Link](./test/medium/test_524_longest_word_in_dictionary_through_deleting.rb) |
593593
| 535. Encode and Decode TinyURL | [Link](https://leetcode.com/problems/encode-and-decode-tinyurl/) | [Link](./lib/medium/535_encode_and_decode_tinyurl.rb) | [Link](./test/medium/test_535_encode_and_decode_tinyurl.rb) |
594+
| 538. Convert BST to Greater Tree | [Link](https://leetcode.com/problems/convert-bst-to-greater-tree/) | [Link](./lib/medium/538_convert_bst_to_greater_tree.rb) | [Link](./test/medium/test_538_convert_bst_to_greater_tree.rb) |

leetcode-ruby.gemspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ require 'English'
55
::Gem::Specification.new do |s|
66
s.required_ruby_version = '>= 3.0'
77
s.name = 'leetcode-ruby'
8-
s.version = '7.2.5'
8+
s.version = '7.2.6'
99
s.license = 'MIT'
1010
s.files = ::Dir['lib/**/*.rb'] + %w[README.md]
1111
s.executable = 'leetcode-ruby'
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# frozen_string_literal: true
2+
3+
$sum = 0
4+
5+
# https://leetcode.com/problems/convert-bst-to-greater-tree/
6+
# @param {TreeNode} root
7+
# @return {TreeNode}
8+
def convert_bst(root)
9+
$sum = 0
10+
11+
convert_bst_with_sum(root)
12+
end
13+
14+
private
15+
16+
# @param {TreeNode} node
17+
# @return {TreeNode}
18+
def convert_bst_with_sum(node)
19+
return unless node
20+
21+
convert_bst_with_sum(node.right)
22+
$sum += node.val
23+
node.val = $sum
24+
convert_bst_with_sum(node.left)
25+
26+
node
27+
end
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
# frozen_string_literal: true
2+
3+
require_relative '../test_helper'
4+
require_relative '../../lib/common/binary_tree'
5+
require_relative '../../lib/medium/538_convert_bst_to_greater_tree'
6+
require 'minitest/autorun'
7+
8+
class ConvertBstToGreaterTreeTest < ::Minitest::Test
9+
def test_default_one
10+
assert(
11+
::TreeNode.are_equals(
12+
::TreeNode.new(
13+
30,
14+
::TreeNode.new(
15+
36,
16+
::TreeNode.new(36),
17+
::TreeNode.new(
18+
35,
19+
nil,
20+
::TreeNode.new(33)
21+
)
22+
),
23+
::TreeNode.new(
24+
21,
25+
::TreeNode.new(26),
26+
::TreeNode.new(
27+
15,
28+
nil,
29+
::TreeNode.new(8)
30+
)
31+
)
32+
),
33+
convert_bst(
34+
::TreeNode.new(
35+
4,
36+
::TreeNode.new(
37+
1,
38+
::TreeNode.new(0),
39+
::TreeNode.new(
40+
2,
41+
nil,
42+
::TreeNode.new(3)
43+
)
44+
),
45+
::TreeNode.new(
46+
6,
47+
::TreeNode.new(5),
48+
::TreeNode.new(
49+
7,
50+
nil,
51+
::TreeNode.new(8)
52+
)
53+
)
54+
)
55+
)
56+
)
57+
)
58+
end
59+
60+
def test_default_two
61+
assert(
62+
::TreeNode.are_equals(
63+
::TreeNode.new(
64+
1,
65+
nil,
66+
::TreeNode.new(1)
67+
),
68+
convert_bst(
69+
::TreeNode.new(
70+
0,
71+
nil,
72+
::TreeNode.new(1)
73+
)
74+
)
75+
)
76+
)
77+
end
78+
end

0 commit comments

Comments
 (0)