-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path100.1_same_tree.rb
65 lines (50 loc) · 1.41 KB
/
100.1_same_tree.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# frozen_string_literal: true
require_relative '../test_helper'
# https://leetcode.com/problems/same-tree/
# Runtime: 105 ms, faster than 57.53% of Ruby online submissions for Same Tree.
# Memory Usage: 210.8 MB, less than 100.00% of Ruby online submissions for Same Tree.
class TreeNode
attr_accessor :val, :left, :right
def initialize(val = 0, left = nil, right = nil)
@val = val
@left = left
@right = right
end
end
class Solution
def is_same_tree(node1, node2)
return true if node1.nil? && node2.nil?
return false if node1.nil?
return false if node2.nil?
node1.val == node2.val &&
is_same_tree(node1.left, node2.left) &&
is_same_tree(node1.right, node2.right)
end
end
class Test < Minitest::Test
def test_1
j3 = TreeNode.new(3)
j2 = TreeNode.new(2)
j1 = TreeNode.new(1, j2, j3)
i3 = TreeNode.new(3)
i2 = TreeNode.new(2)
i1 = TreeNode.new(1, i2, i3)
assert_equal true, Solution.new.is_same_tree(i1, j1)
end
def test_2
j2 = TreeNode.new(2)
j1 = TreeNode.new(1, nil, j2)
i2 = TreeNode.new(2)
i1 = TreeNode.new(1, i2)
assert_equal false, Solution.new.is_same_tree(i1, j1)
end
def test_3
j3 = TreeNode.new(2)
j2 = TreeNode.new(1)
j1 = TreeNode.new(1, j2, j3)
i3 = TreeNode.new(1)
i2 = TreeNode.new(2)
i1 = TreeNode.new(1, i2, i3)
assert_equal false, Solution.new.is_same_tree(i1, j1)
end
end