力扣671. 二叉树中第二小的节点
遍历+一个set去重+排序,十分方便
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:void cntcount(TreeNode* root,set<int>& ans){if(root==nullptr){return ;}else{cntcount(root->left,ans);ans.insert(root->val);cntcount(root->right,ans);}}int findSecondMinimumValue(TreeNode* root) {set<int> ans;cntcount(root,ans);if(ans.size()<=1){return -1;}auto it=ans.begin();it++;return *it;}
};
时间复杂度O(n)