LeetCode 671. 二叉树中第二小的节点
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 671. 二叉树中第二小的节点
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1. 題目信息
- 2. 解題
- 2.1 遞歸查找
- 2.2 改循環
1. 題目信息
給定一個非空特殊的二叉樹,每個節點都是正數,并且每個節點的子節點數量只能為 2 或 0。如果一個節點有兩個子節點的話,那么這個節點的值不大于它的子節點的值。
給出這樣的一個二叉樹,你需要輸出所有節點中的第二小的值。如果第二小的值不存在的話,輸出 -1 。
示例 1:輸入: 2/ \2 5/ \5 7輸出: 5 說明: 最小的值是 2 ,第二小的值是 5 。 示例 2:輸入: 2/ \2 2輸出: -1 說明: 最小的值是 2, 但是不存在第二小的值。來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/second-minimum-node-in-a-binary-tree
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
- 根節點是最小的,依次查找每個節點是否比最小的大
- 并更新找到的第二小的數組
2.1 遞歸查找
class Solution { public:int findSecondMinimumValue(TreeNode* root) {if(!root)return -1;int minNum = root->val;long secMinNum = LONG_MAX;findSec(root,minNum,secMinNum);if(secMinNum != LONG_MAX)return secMinNum;return -1;}void findSec(TreeNode* root, int &minNum, long &secMinNum){if(!root)return;if(root->val > minNum && root->val < secMinNum){secMinNum = root->val;}findSec(root->left,minNum,secMinNum);findSec(root->right,minNum,secMinNum);} };2.2 改循環
前序循環
總結
以上是生活随笔為你收集整理的LeetCode 671. 二叉树中第二小的节点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python源文件编码的含义_【原创】P
- 下一篇: qr分解求线性方程组_计算方法/数值分析