Skip to content

Commit f8c8775

Browse files
authored
Create second-minimum-node-in-a-binary-tree.py
1 parent 2e76fc9 commit f8c8775

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# Time: O(n)
2+
# Space: O(h)
3+
4+
# Definition for a binary tree node.
5+
# class TreeNode(object):
6+
# def __init__(self, x):
7+
# self.val = x
8+
# self.left = None
9+
# self.right = None
10+
11+
class Solution(object):
12+
def findSecondMinimumValue(self, root):
13+
"""
14+
:type root: TreeNode
15+
:rtype: int
16+
"""
17+
def findSecondMinimumValueHelper(root, max_heap, lookup):
18+
if not root:
19+
return
20+
if root.val not in lookup:
21+
heapq.heappush(max_heap, -root.val)
22+
lookup.add(root.val)
23+
if len(max_heap) > 2:
24+
lookup.remove(-heapq.heappop(max_heap))
25+
findSecondMinimumValueHelper(root.left, max_heap, lookup)
26+
findSecondMinimumValueHelper(root.right, max_heap, lookup)
27+
28+
max_heap, lookup = [], set()
29+
findSecondMinimumValueHelper(root, max_heap, lookup)
30+
if len(max_heap) < 2:
31+
return -1
32+
return -max_heap[0]

0 commit comments

Comments
 (0)