1. 程式人生 > >671. Second Minimum Node In a Binary Tree 二叉樹中第二小節點

671. Second Minimum Node In a Binary Tree 二叉樹中第二小節點

ati auto www. this 最小 flow app sel special

Given a non-empty special binary tree consisting of nodes with the non-negative value, where each node in this tree has exactly twoor 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

value in the set made of all the nodes‘ value in the whole tree.

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 Explanation: The smallest value is 2, but there isn‘t any second smallest value.

給定由非負值的節點組成的非空特殊二叉樹,其中該樹中的每個節點都具有兩個或零個子節點。如果節點有兩個子節點,則該節點的值是其兩個子節點之間的較小值。 給定這樣一個二叉樹,您需要輸出整個樹中所有節點值的集合中的第二個最小值。 如果不存在這樣的第二個最小值,則輸出-1。

  1. # Definition for a binary tree node.
  2. # class TreeNode(object):
  3. # def __init__(self, x):
  4. # self.val = x
  5. # self.left = None
  6. # self.right = None
  7. class Solution(object):
  8. def findSecondMinimumValue(self, root):
  9. """
  10. :type root: TreeNode
  11. :rtype: int
  12. """
  13. s = set()
  14. queue = [root]
  15. while queue and queue[0]:
  16. node = queue.pop(0)
  17. s.add(node.val)
  18. if node.left:
  19. queue.append(node.left)
  20. if node.right:
  21. queue.append(node.right)
  22. if len(s) < 2:
  23. return -1
  24. else:
  25. s.remove(min(s))
  26. return min(s)



來自為知筆記(Wiz)

671. Second Minimum Node In a Binary Tree 二叉樹中第二小節點