-
Notifications
You must be signed in to change notification settings - Fork 1
/
7_4.rb
90 lines (72 loc) · 1.75 KB
/
7_4.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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# @param {Integer[][]} a
# @return {Integer[][]}
def flip_and_invert_image(img_arr)
img_arr.each_with_index do |row,idx|
row.each_with_index do |ele,ele_idx|
ele == 0 ? row[ele_idx] = 1 : row[ele_idx] = 0
end
img_arr[idx] = row.reverse
end
img_arr
end
# Definition for a binary tree node.
# class TreeNode
# attr_accessor :val, :left, :right
# def initialize(val = 0, left = nil, right = nil)
# @val = val
# @left = left
# @right = right
# end
# end
# @param {TreeNode} root1
# @param {TreeNode} root2
# @return {Boolean}
# LIFO stack!!
def get_lef_seq(root)
leaves_arr = []
stack = [root]
while stack.length > 0
curr_node = stack.pop
if curr_node.left
stack.push(curr_node.left)
end
if curr_node.right
stack.push(curr_node.right)
end
leaves_arr.push(curr_node.val) unless (curr_node.left || curr_node.right)
end
leaves_arr
end
def leaf_similar(root1, root2)
get_lef_seq(root1) == get_lef_seq(root2)
end
# Definition for a binary tree node.
# class TreeNode
# attr_accessor :val, :left, :right
# def initialize(val = 0, left = nil, right = nil)
# @val = val
# @left = left
# @right = right
# end
# end
# @param {TreeNode} root
# @return {Integer}
# me
# | \
# me greater than me || me
def find_second_minimum_value(root)
if !root
return
end
if root.left
if root.left.val != root.val
return root.left.val
else
find_second_minumum_value(root.left)
end
end
if root.right
find_second_minumum_value(root.right)
end
-1
end