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. 二叉樹中第二小的節點二叉樹
- Java中在二叉搜尋樹中查詢節點的父節點Java
- 二叉樹兩個節點的公共節點二叉樹
- 二叉樹中兩個節點的最低公共祖先二叉樹
- LeetCode-222-完全二叉樹的節點個數LeetCode二叉樹
- 【vue】在二叉樹中根據子節點找出父節點路徑Vue二叉樹
- 二叉樹任意兩個節點間的最大距離(Java,LeetCode 543二叉樹的直徑 遞迴)二叉樹JavaLeetCode遞迴
- 刷題系列 - 在二叉樹中查詢給出節點,並返回以該節點為根的樹二叉樹
- Kotlin 鏈式儲存的二叉樹中查詢節點Kotlin二叉樹
- 008,二叉樹的下一個節點二叉樹
- 快速求完全二叉樹的節點個數二叉樹
- leetcode 450. delete-node-in-a-bst 刪除二叉搜尋樹中的節點 python3LeetCodedeletePython
- 二叉樹中相距最遠的兩個節點之間的距離二叉樹
- 程式碼隨想錄——二叉樹-11.完全二叉樹的節點個數二叉樹
- 刷題系列 - 在二叉樹中,為每個節點關聯其右相鄰節點二叉樹
- LeetCode-230-二叉搜尋樹中第K小的元素LeetCode
- Leetcode230. 二叉搜尋樹中第K小的元素LeetCode
- 為什麼二叉樹中葉子節點個數等於度為2的節點個數+1二叉樹
- 到達二叉樹目標節點的完整路徑二叉樹
- Leetcode——94.二叉樹的中序遍歷LeetCode二叉樹
- 平衡二叉樹 AVL 的插入節點後旋轉方法分析二叉樹
- 【LeetCode-二叉樹】二叉樹前序遍歷LeetCode二叉樹
- Java二叉樹排序及任意兩點個節點間的最大距離Java二叉樹排序
- 刷題系列 - 在給出二叉樹中兩個點,求出其最小共同父節點二叉樹
- 【leetcode 簡單】第二十七題 二叉樹的最小深度LeetCode二叉樹
- 程式碼隨想錄演算法訓練營day22 | leetcode 235. 二叉搜尋樹的最近公共祖先、701. 二叉搜尋樹中的插入操作、450. 刪除二叉搜尋樹中的節點演算法LeetCode
- leetcode------給定一個二叉樹和一個值sum,判斷是否有從根節點到葉子節點的節點值之和等於sum 的路徑,LeetCode二叉樹
- 二叉樹父子節點下標位置關係證明二叉樹
- 《劍指offer》之在完全二叉樹中新增子節點二叉樹
- 二叉樹節點個數,葉子個數,第K層個數,最低公共節點二叉樹
- 5分鐘瞭解二叉樹之LeetCode裡的二叉樹二叉樹LeetCode
- 二叉樹的知識點二叉樹
- leetcode----給定一個二叉樹,返回該二叉樹由底層到頂層的層序遍歷,(從左向右,從葉子節點到根節點,一層一層的遍歷)LeetCode二叉樹
- 資料結構中的樹(二叉樹、二叉搜尋樹、AVL樹)資料結構二叉樹
- LeetCode 對稱二叉樹LeetCode二叉樹
- 建立二叉樹:層次遍歷--樹的寬度高度,後序遍歷--祖先節點二叉樹
- 程式碼隨想錄演算法訓練營第二十二天 | 235.二叉搜尋樹的最近公共祖先 701.二叉搜尋樹中的插入操作 450.刪除二叉搜尋樹中的節點演算法
- Codeup《演算法筆記》9.2小節——資料結構專題(2)->二叉樹的遍歷->二叉樹演算法筆記資料結構二叉樹