LeetCode——671. 二叉樹中第二小的節點
給定一個非空特殊的二叉樹,每個節點都是正數,並且每個節點的子節點數量只能為 2 或 0。如果一個節點有兩個子節點的話,那麼該節點的值等於兩個子節點中較小的一個。更正式地說,root.val = min(root.left.val, root.right.val) 總成立。給出這樣的一個二叉樹,你需要輸出所有節點中的第二小的值。如果第二小的值不存在的話,輸出 -1 。
提示:
樹中節點數目在範圍 [1, 25] 內
1 <= Node.val <= 2^31 - 1
對於樹中每個節點 root.val == min(root.left.val, root.right.val)
示例 1:
輸入:root = [2,2,5,null,null,5,7]
輸出:5
解釋:最小的值是 2 ,第二小的值是 5 。
示例 2:
輸入:root = [2,2,2]
輸出:-1
解釋:最小的值是 2, 但是不存在第二小的值。
程式碼如下:
/**
* 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:
int findSecondMinimumValue(TreeNode* root) {
vector<int>v;
if(root==nullptr)
{
return -1;
}
traverse(root,v);
sort(v.begin(),v.end());
int min=v[0];
for(int i=1;i<v.size();i++)
{
if(v[i]!=v[0])
{
min=v[i];
break;
}
}
if(min==v[0])
{
return -1;
}
else
{
return min;
}
}
void traverse(TreeNode*root,vector<int>&v)
{
if(root==nullptr)
{
return;
}
v.push_back(root->val);
traverse(root->left,v);
traverse(root->right,v);
}
};
執行結果:
相關文章
- 671. 二叉樹中第二小的節點二叉樹
- LeetCode-222-完全二叉樹的節點個數LeetCode二叉樹
- Java中在二叉搜尋樹中查詢節點的父節點Java
- 二叉樹任意兩個節點間的最大距離(Java,LeetCode 543二叉樹的直徑 遞迴)二叉樹JavaLeetCode遞迴
- LeetCode-230-二叉搜尋樹中第K小的元素LeetCode
- Leetcode230. 二叉搜尋樹中第K小的元素LeetCode
- leetcode 450. delete-node-in-a-bst 刪除二叉搜尋樹中的節點 python3LeetCodedeletePython
- 【vue】在二叉樹中根據子節點找出父節點路徑Vue二叉樹
- 008,二叉樹的下一個節點二叉樹
- Kotlin 鏈式儲存的二叉樹中查詢節點Kotlin二叉樹
- 刷題系列 - 在二叉樹中查詢給出節點,並返回以該節點為根的樹二叉樹
- 快速求完全二叉樹的節點個數二叉樹
- 【leetcode 簡單】第二十七題 二叉樹的最小深度LeetCode二叉樹
- 二叉搜尋樹如何刪除節點
- 程式碼隨想錄——二叉樹-11.完全二叉樹的節點個數二叉樹
- Leetcode——94.二叉樹的中序遍歷LeetCode二叉樹
- 【LeetCode-二叉樹】二叉樹前序遍歷LeetCode二叉樹
- 刷題系列 - 在二叉樹中,為每個節點關聯其右相鄰節點二叉樹
- 到達二叉樹目標節點的完整路徑二叉樹
- 為什麼二叉樹中葉子節點個數等於度為2的節點個數+1二叉樹
- 程式碼隨想錄演算法訓練營第十五天|leetcode110. 平衡二叉樹、leetcode257.二叉樹的所有路徑、leeetcode404.左葉子之和、leetcode222.完全二叉樹的節點個數演算法LeetCode二叉樹
- leetcode 111 二叉樹的最小深度LeetCode二叉樹
- 程式碼隨想錄演算法訓練營day22 | leetcode 235. 二叉搜尋樹的最近公共祖先、701. 二叉搜尋樹中的插入操作、450. 刪除二叉搜尋樹中的節點演算法LeetCode
- LeetCode 對稱二叉樹LeetCode二叉樹
- Day16 | 104.二叉樹的最大深度 、111.二叉樹的最小深度 、222.完全二叉樹的節點個數二叉樹
- 5分鐘瞭解二叉樹之LeetCode裡的二叉樹二叉樹LeetCode
- LeetCode 124. 二叉樹中的最大路徑和 | PythonLeetCode二叉樹Python
- 783. 二叉搜尋樹節點最小距離
- leetcode------給定一個二叉樹和一個值sum,判斷是否有從根節點到葉子節點的節點值之和等於sum 的路徑,LeetCode二叉樹
- leetcode----給定一個二叉樹,返回該二叉樹由底層到頂層的層序遍歷,(從左向右,從葉子節點到根節點,一層一層的遍歷)LeetCode二叉樹
- [LeetCode] 671. Second Minimum Node In a Binary TreeLeetCode
- LeetCode 104.二叉樹的最大深度LeetCode二叉樹
- 「leetcode」111.二叉樹的最小深度LeetCode二叉樹
- LeetCode-110-平衡二叉樹LeetCode二叉樹
- 程式碼隨想錄演算法訓練營第十七天|leetcode654. 最大二叉樹、leetcode617.合併二叉樹、leetcode700.二叉搜尋樹中的搜尋、leetcode98.驗證二叉搜尋樹演算法LeetCode二叉樹
- 程式碼隨想錄演算法訓練營第二十二天 | 235.二叉搜尋樹的最近公共祖先 701.二叉搜尋樹中的插入操作 450.刪除二叉搜尋樹中的節點演算法
- 刷題系列 - 在給出二叉樹中兩個點,求出其最小共同父節點二叉樹
- 程式碼隨想錄演算法訓練營day16 | leetcode 104. 二叉樹的最大深度、559. N 叉樹的最大深度、111. 二叉樹的最小深度、222. 完全二叉樹的節點個數演算法LeetCode二叉樹