LeetCode 98 驗證二叉搜尋樹

2022-08-11 20:39:08 字數 785 閱讀 5528

給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。

假設乙個二叉搜尋樹具有如下特徵:

節點的左子樹只包含小於當前節點的數。

節點的右子樹只包含大於當前節點的數。

所有左子樹和右子樹自身必須也是二叉搜尋樹。

示例 1:

輸入:2

/ \1  3

輸出: true

示例 2:

輸入:5

/ \1  4

/ \3   6

輸出: false

解釋: 輸入為: [5,1,4,null,null,3,6]。

根節點的值為 5 ,但是其右子節點值為 4 。

首先明確一下二叉搜尋樹bts的定義,對於任意乙個節點,它的所有左子樹的值都要嚴格小於根節點,它的所有右子樹的值都要嚴格大於根節點。這道題可以用自上而下的方法解,遞迴的定義每個子樹的範圍。

讓根節點的範圍是[負無窮,正無窮],那麼根節點的左子樹的範圍是[負無窮,根節點的值-1],根節點的右子樹的範圍是[根節點的值+1,正無窮]。這樣遞迴下去,對於每乙個節點都算出它的左子樹和右子樹的範圍,如果在遞迴過程中沒有出現突破範圍的情況,則這棵樹是bts。

c++**如下:

1

class

solution 67

bool dfs(treenode* root, long

long minv, long

long

maxv)

13 };

第11行中,為了防止溢位,把1的資料型別轉換為long long就可以了。

leetcode 98 驗證二叉搜尋樹

給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。乙個二叉搜尋樹具有如下特徵 示例 1 輸入 1 3 輸出 true 示例 2 輸入 1 4 3 6 輸出 false 解釋 輸入為 5,1,4,null,null,3,6 根節點的值為 5 但是其右子節點值為 4 關鍵資訊 1二叉搜尋樹的中序遍歷是遞...

leetcode 98 驗證二叉搜尋樹

給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。乙個二叉搜尋樹具有如下特徵 示例 1 輸入 2 1 3 輸出 true示例 2 輸入 5 1 4 3 6 輸出 false 解釋 輸入為 5,1,4,null,null,3,6 根節點的值為 5 但是其右子節點值為 4 解題思路 中序遍歷遞增,每次只...

leetcode 98 驗證二叉搜尋樹

給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。乙個二叉搜尋樹具有如下特徵 示例 1 輸入 2 1 3 輸出 true示例 2 輸入 5 1 4 3 6 輸出 false 解釋 輸入為 5,1,4,null,null,3,6 根節點的值為 5 但是其右子節點值為 4 如果對二叉搜尋樹不夠了解,可能...