2019-03-28 검증 필요

1717 단어
1. #### 두 번째 트리 중 두 번째 작은 노드는 비어 있지 않은 특수한 두 번째 트리를 지정합니다. 각 노드는 정수이고 각 노드의 하위 노드 수량은 2 또는 0일 수 있습니다.만약 한 노드에 두 개의 하위 노드가 있다면, 이 노드의 값은 그것의 하위 노드의 값보다 크지 않다.
이런 두 갈래 나무를 제시하려면 모든 노드 중의 두 번째 작은 값을 출력해야 한다.두 번째 작은 값이 존재하지 않으면 출력 -1.
예 1:
입력: 2/25/5 7
출력: 5 설명: 가장 작은 값은 2, 두 번째 작은 값은 5입니다.예 2:
입력: 2/2
출력: -1설명: 가장 작은 값은 2이지만 두 번째 작은 값은 존재하지 않습니다.
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    int findSecondMinimumValue(TreeNode* root) {
        
        if( root -> left == NULL )  return -1;
        vector res;
        store(root ,res);
         
        int last = root->val,last2 = root->left->val;
        
        for( int i = 0 ; i < res.size() ; i++)
        {
            if(last == last2)
            {
                if(res[i] < last) last = res[i];
                if(res[i] > last) last2 = res[i];
            }
            else
            {
                if( res[i] < last)
                {
                    last2 = last;
                    last = res[i];
                }
                if( res[i] >last && res[i] < last2)
                {
                    last2 = res[i];
                }
            }
        }
        
        '
            return ans;'
        
    }
    void store(Tree Node* root, vector &res)
    {
        if( root == NULL) return;
        res.push_back(root->val);
        store( root ->left , res);
        store( root ->right , res);
    }
    
};


좋은 웹페이지 즐겨찾기