[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/feixiangcode/algorithm/master/Week_02/id_102/leetcode_671_102.cpp [Back]  [Original]

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 * Link: https://leetcode-cn.com/problems/second-minimum-node-in-a-binary-tree/comments/
 */
class Solution {
    long secondMinVal = LONG_MAX;
    bool isRoot = true;
    int  rootVal;
    
public:
    int findSecondMinimumValue(TreeNode* root) {
        if (root == NULL) {
            return -1;
        } 
        
        if (isRoot) {
            isRoot = false;
            rootVal = root->val;
        }
        
        /* root valuesecondMinVal */
        if ((long)root->val > rootVal && (long)root->val < secondMinVal) {
            secondMinVal = (long)root->val;    
        }
        
        findSecondMinimumValue(root->left);
        findSecondMinimumValue(root->right);
        
        return secondMinVal != LONG_MAX ? secondMinVal : -1;
    }    
};

Web Proxy Viewer  |  New URL  |  Original Page