Q:
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 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.
A:
# 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
"""
def traNode(node):
if not node:
return None
traNode(node.left)
nodesList.append(node.val)
traNode(node.right)
nodesList = []
traNode(root)
if len(set(nodesList)) > 1:
return sorted(list(set(nodesList)))[1]
else:
return -1
本文介绍了一种算法,用于在特殊类型的二叉树中寻找节点值的第二小值。这种二叉树的每个节点都有两个或没有子节点,并且如果一个节点有两个子节点,则该节点的值为其两个子节点值中的较小者。文章提供了Python实现示例。

141

被折叠的 条评论
为什么被折叠?



