leetcode 671 二叉樹中第二小的節點

2021-08-19 22:55:56 字數 989 閱讀 4050

給定乙個非空特殊的二叉樹,每個節點都是正數,並且每個節點的子節點數量只能為20。如果乙個節點有兩個子節點的話,那麼這個節點的值不大於它的子節點的值。 

給出這樣的乙個二叉樹,你需要輸出所有節點中的第二小的值。如果第二小的值不存在的話,輸出 -1 。

示例 1:

輸入: 

2/ \

2 5

/ \5 7

輸出: 5

說明: 最小的值是 2 ,第二小的值是 5 。

示例 2:

輸入: 

2/ \

2 2

輸出: -1

說明: 最小的值是 2, 但是不存在第二小的值。

思路:設定兩個變數傳遞最小值(first)和第二小值(second),並且賦予初始值65535。接下來進行先序遍歷,每到乙個結點,將此結點的值與first和second比較,如果比first小,則把first的值賦給second和當前結點的值賦給first(順序不能反)。如果比first大且比second小,則把當前結點的值賦給second。依次遍歷完所有結點。最後判斷second的值是否改變(是否依然為65535),不變說明沒有第二小值返回-1,否則返回second。

**:

/**

* definition for a binary tree node.

* struct treenode

* };

*/class solution

void secondmin(treenode *root,int &first,int &second)

else if(root->val>first&&root->valval;

secondmin(root->left,first,second);

secondmin(root->right,first,second);}}

};

LeetCode 671 二叉樹中第二小的節點

題目描述 給定乙個非空特殊的二叉樹,每個節點都是正數,並且每個節點的子節點數量只能為 2 或 0。如果乙個節點有兩個子節點的話,那麼這個節點的值不大於它的子節點的值。給出這樣的乙個二叉樹,你需要輸出所有節點中的第二小的值。如果第二小的值不存在的話,輸出 1 示例 1 輸入 2 2 5 5 7 輸出 ...

LeetCode 671 二叉樹中第二小的節點

給定乙個非空特殊的二叉樹,每個節點都是正數,並且每個節點的子節點數量只能為 2 或 0。如果乙個節點有兩個子節點的話,那麼這個節點的值不大於它的子節點的值。給出這樣的乙個二叉樹,你需要輸出所有節點中的第二小的值。如果第二小的值不存在的話,輸出 1 示例 1 輸入 2 2 5 5 7 輸出 5 說明 ...

671 二叉樹中第二小的節點

給定乙個非空特殊的二叉樹,每個節點都是正數,並且每個節點的子節點數量只能為 2 或 0。如果乙個節點有兩個子節點的話,那麼這個節點的值不大於它的子節點的值。給出這樣的乙個二叉樹,你需要輸出所有節點中的第二小的值。如果第二小的值不存在的話,輸出 1 示例 1 輸入 2 2 5 5 7輸出 5 說明 最...