File tree Expand file tree Collapse file tree 4 files changed +135
-1
lines changed Expand file tree Collapse file tree 4 files changed +135
-1
lines changed Original file line number Diff line number Diff line change @@ -622,3 +622,4 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/).
622622| 763. Partition Labels | [ Link] ( https://leetcode.com/problems/partition-labels/ ) | [ Link] ( ./lib/medium/763_partition_labels.rb ) | [ Link] ( ./test/medium/test_763_partition_labels.rb ) |
623623| 784. Letter Case Permutation | [ Link] ( https://leetcode.com/problems/letter-case-permutation/ ) | [ Link] ( ./lib/medium/784_letter_case_permutation.rb ) | [ Link] ( ./test/medium/test_784_letter_case_permutation.rb ) |
624624| 797. All Paths From Source to Target | [ Link] ( https://leetcode.com/problems/all-paths-from-source-to-target/ ) | [ Link] ( ./lib/medium/797_all_paths_from_source_to_target.rb ) | [ Link] ( ./test/medium/test_797_all_paths_from_source_to_target.rb ) |
625+ | 814. Binary Tree Pruning | [ Link] ( https://leetcode.com/problems/binary-tree-pruning/ ) | [ Link] ( ./lib/medium/814_binary_tree_pruning.rb ) | [ Link] ( ./test/medium/test_814_binary_tree_pruning.rb ) |
Original file line number Diff line number Diff 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.5.7.1 '
8+ s . version = '7.5.8 '
99 s . license = 'MIT'
1010 s . files = ::Dir [ 'lib/**/*.rb' ] + %w[ README.md ]
1111 s . executable = 'leetcode-ruby'
Original file line number Diff line number Diff line change 1+ # frozen_string_literal: true
2+
3+ # https://leetcode.com/problems/binary-tree-pruning/
4+ # @param {TreeNode} root
5+ # @return {TreeNode}
6+ def prune_tree ( root ) = has_one_in_prune_tree? ( root ) ? root : nil
7+
8+ private
9+
10+ # @param {TreeNode} node
11+ # @return {Boolean}
12+ def has_one_in_prune_tree? ( node )
13+ return false unless node
14+
15+ has_one_at_left = has_one_in_prune_tree? ( node . left )
16+ has_one_at_right = has_one_in_prune_tree? ( node . right )
17+
18+ node . left = nil unless has_one_at_left
19+ node . right = nil unless has_one_at_right
20+
21+ node . val == 1 || has_one_at_left || has_one_at_right
22+ end
Original file line number Diff line number Diff line change 1+ # frozen_string_literal: true
2+
3+ require_relative '../test_helper'
4+ require_relative '../../lib/common/binary_tree'
5+ require_relative '../../lib/medium/814_binary_tree_pruning'
6+ require 'minitest/autorun'
7+
8+ class BinaryTreePruningTest < ::Minitest ::Test
9+ def test_default_one
10+ assert (
11+ ::TreeNode . are_equals (
12+ ::TreeNode . new (
13+ 1 ,
14+ nil ,
15+ ::TreeNode . new (
16+ 0 ,
17+ nil ,
18+ ::TreeNode . new ( 1 )
19+ )
20+ ) ,
21+ prune_tree (
22+ ::TreeNode . new (
23+ 1 ,
24+ nil ,
25+ ::TreeNode . new (
26+ 0 ,
27+ ::TreeNode . new ( 0 ) ,
28+ ::TreeNode . new ( 1 )
29+ )
30+ )
31+ )
32+ )
33+ )
34+ end
35+
36+ def test_default_two
37+ assert (
38+ ::TreeNode . are_equals (
39+ ::TreeNode . new (
40+ 1 ,
41+ nil ,
42+ ::TreeNode . new (
43+ 1 ,
44+ nil ,
45+ ::TreeNode . new ( 1 )
46+ )
47+ ) ,
48+ prune_tree (
49+ ::TreeNode . new (
50+ 1 ,
51+ ::TreeNode . new (
52+ 0 ,
53+ ::TreeNode . new ( 0 ) ,
54+ ::TreeNode . new ( 0 )
55+ ) ,
56+ ::TreeNode . new (
57+ 1 ,
58+ ::TreeNode . new ( 0 ) ,
59+ ::TreeNode . new ( 1 )
60+ )
61+ )
62+ )
63+ )
64+ )
65+ end
66+
67+ def test_default_three
68+ assert (
69+ ::TreeNode . are_equals (
70+ ::TreeNode . new (
71+ 1 ,
72+ ::TreeNode . new (
73+ 1 ,
74+ ::TreeNode . new (
75+ 1 ,
76+ ::TreeNode . new ( 1 ) ,
77+ ::TreeNode . new ( 1 )
78+ )
79+ ) ,
80+ ::TreeNode . new (
81+ 0 ,
82+ nil ,
83+ ::TreeNode . new ( 1 )
84+ )
85+ ) ,
86+ prune_tree (
87+ ::TreeNode . new (
88+ 1 ,
89+ ::TreeNode . new (
90+ 1 ,
91+ ::TreeNode . new (
92+ 1 ,
93+ ::TreeNode . new (
94+ 1 ,
95+ ::TreeNode . new ( 0 ) ,
96+ nil
97+ ) ,
98+ ::TreeNode . new ( 1 )
99+ )
100+ ) ,
101+ ::TreeNode . new (
102+ 0 ,
103+ ::TreeNode . new ( 0 ) ,
104+ ::TreeNode . new ( 1 )
105+ )
106+ )
107+ )
108+ )
109+ )
110+ end
111+ end
You can’t perform that action at this time.
0 commit comments