671. Second Minimum Node In a Binary Tree 二叉樹中第二小節點
阿新 • • 發佈:2017-09-10
ati auto www. this 最小 flow app sel special value in the set made of all the nodes‘ value in the whole tree.
來自為知筆記(Wiz)
Given a non-empty special binary tree consisting of nodes with the non-negative value, where each node in this tree has exactly two
or zero
sub-node. If the node has two sub-nodes, then this node‘s value is the smaller value among its two sub-nodes.
Given such a binary tree, you need to output the second minimum
If no such second minimum value exists, output -1 instead.
Example 1:
Input: 2 / 2 5 / 5 7 Output: 5 Explanation: The smallest value is 2, the second smallest value is 5.
Example 2:
Input: 2 / 2 2 Output:給定由非負值的節點組成的非空特殊二叉樹,其中該樹中的每個節點都具有兩個或零個子節點。如果節點有兩個子節點,則該節點的值是其兩個子節點之間的較小值。 給定這樣一個二叉樹,您需要輸出整個樹中所有節點值的集合中的第二個最小值。 如果不存在這樣的第二個最小值,則輸出-1。-1 Explanation: The smallest value is 2, but there isn‘t any second smallest value.
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def findSecondMinimumValue(self, root):
"""
:type root: TreeNode
:rtype: int
"""
s = set()
queue = [root]
while queue and queue[0]:
node = queue.pop(0)
s.add(node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
if len(s) < 2:
return -1
else:
s.remove(min(s))
return min(s)
來自為知筆記(Wiz)
671. Second Minimum Node In a Binary Tree 二叉樹中第二小節點