Skip to content

Commit 08b2f89

Browse files
lglovelige
authored andcommitted
Create LeetCode_671_024.rb 修改week_01的命名
1 parent 4eb7281 commit 08b2f89

4 files changed

Lines changed: 35 additions & 0 deletions

File tree

File renamed without changes.

Week_02/id_24/LeetCode_671_024.rb

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# https://leetcode-cn.com/problems/second-minimum-node-in-a-binary-tree/submissions/
2+
# 671. 二叉树中第二小的节点
3+
# 解题思路 首先阅读题干我们得到信息,该二叉树有一个特点,节点都为正数,如果有两个子节点则节点值不大于子节点的值
4+
# 由此我们得出,求该二叉树第二小的节点值即为求该二叉树左右子树的最小节点值,因为根节点肯定是最小的节点
5+
# 解题过程中遇到的第一个问题,递归代码不熟练,代码实现有卡壳的地方,第二个问题,刚开始做的时候虽然想到了遇到-1要取左右子树
6+
# 中较大的那个返回值,还是在代码实现上没处理好,只处理了取最大值,来回改动的时候都是不对的,第三个问题,递归公式实现的时候
7+
# 前期以为返回-1是左节点为空的时候,其实不是,应该是自身取值为空的时候返回-1,如果用左节点为空作为退出条件之一,递归会少往下
8+
# 走一层,当出现 [2,2,5]这种时,结果会是-1.
9+
10+
# Definition for a binary tree node.
11+
# class TreeNode
12+
# attr_accessor :val, :left, :right
13+
# def initialize(val)
14+
# @val = val
15+
# @left, @right = nil, nil
16+
# end
17+
# end
18+
19+
# @param {TreeNode} root
20+
# @return {Integer}
21+
def find_second_minimum_value(root)
22+
find_minimum_value(root, root.val)
23+
end
24+
def find_minimum_value(root, val)
25+
return -1 if root.nil?
26+
return root.val if root.val > val
27+
left_value = find_minimum_value(root.left, val)
28+
right_value = find_minimum_value(root.right, val)
29+
if left_value >=0 && right_value >= 0
30+
v = [left_value, right_value].min
31+
else
32+
v = [left_value, right_value].max
33+
end
34+
return v
35+
end

0 commit comments

Comments
 (0)