671 Second Minimum Node In a Binary Tree

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

Solution)

If there is any equal value in the sub node, find the second minimum from the node.


/**
 * 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.left == null) return -1;

        int l = root.left.val == root.val ? findSecondMinimumValue(root.left) : root.left.val;
        int r = root.right.val == root.val ? findSecondMinimumValue(root.right) : root.right.val;

        return l == -1 || r == -1 ? Math.max(l, r) : Math.min(l, r);        
    }
}

results matching ""

    No results matching ""