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.
如果节点为空,或者没有子节点,返回-1
如果子节点的值和当前节点一样,递归求next candidate;如果不同,子节点的值当作candidate
如果左右节点的值都不是 -1,返回其中较小的节点值,否则返回其中不等于-1的节点值
time: O(n),space: O(height)
/** * DeFinition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public int findSecondMinimumValue(TreeNode root) { if(root == null) { return -1; } if(root.left == null && root.right == null) { return -1; } int left = root.left.val; int right = root.right.val; if(root.left.val == root.val) { left = findSecondMinimumValue(root.left); } if(root.right.val == root.val) { right = findSecondMinimumValue(root.right); } if(left != -1 && right != -1) { return Math.min(left,right); } else if(left != -1) { return left; } else { return right; } } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。