[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/feixiangcode/algorithm/master/Week_02/id_26/Leetcode_671_26.java [Back]  [Original]

package com.fanlu.leetcode.binarytree;
// Source : https://leetcode.com/problems/second-minimum-node-in-a-binary-tree/
// Id     : 671
// Author : Fanlu Hai
// Date   : 2018-04-23
// Other  : Long result =Long.valueOf(Integer.MAX_VALUE)+1; Long.valueOf(Integer.MAX_VALUE+1) will result in Integer.MIN
// Tips   :

import java.util.PriorityQueue;

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 * int val;
 * TreeNode left;
 * TreeNode right;
 * TreeNode(int x) { val = x; }
 * }
 */

// to do
public class SecondMinimumNodeInABinaryTree {

    //Long result =Long.valueOf(Integer.MAX_VALUE)+1;
    Long result = Long.MAX_VALUE;

    //100.00% 93.19%
    public int findSecondMinimumValue(TreeNode root) {
        if (null == root || null == root.left)
            return -1;

        int min = root.val;
        dfs(root, min);
        if (result == min)
            return -1;
        if (result == Long.MAX_VALUE)
            return -1;

        return result.intValue();
    }

    public void dfs(TreeNode node, int min) {
        if (null == node)
            return;
        if (node.val != min && node.val < result) {
            result = Long.valueOf(node.val);
        }
        dfs(node.left, min);
        dfs(node.right, min);
    }


    PriorityQueue queue = new PriorityQueue();

    // 5% 93%
    public int findSecondMinimumValueThinkTooLess(TreeNode root) {
        preorderTraverse(root);

        if (queue.isEmpty() || queue.size() == 1)
            return -1;
        int min = queue.poll();
        System.out.println(min);
        while (!queue.isEmpty()) {
            int second = queue.poll();
            System.out.println(second);
            if (second == min) {
                continue;
            }
            return second;
        }
        return -1;
    }

    public void preorderTraverse(TreeNode node) {
        if (null == node)
            return;
        queue.add(node.val);
        preorderTraverse(node.left);
        preorderTraverse(node.right);

    }
}

Web Proxy Viewer  |  New URL  |  Original Page