給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。
假設乙個二叉搜尋樹具有如下特徵:
示例 1:
輸入:示例 2:2/ \
1 3
輸出: true
輸入:5/ \
1 4
/ \3 6
輸出: false
解釋: 輸入為: [5,1,4,null,null,3,6]。
根節點的值為 5 ,但是其右子節點值為 4 。
/** * definition for a binary tree node.
* struct treenode
* }; */
/*演算法思想:
採用遞迴的方法,利用它本身的性質來做,即左《根《右,初始化時帶入系統最大值和最小值,在遞迴過程中換成它們自己的節點值,用long代替int就是為了包括int的邊界條件。
*///
演算法實現:
class
solution
bool isvalidbst(treenode *root, long mn, long
mx)
};/*
演算法思想:
採用迭代的方法,值得注意的是,對於二叉搜尋樹,我們可以通過中序遍歷得到乙個遞增的有序序列。因此,中序遍歷是二叉搜尋樹中最常用的遍歷方法。故而對樹進行非遞迴中序遍歷並判斷是否滿足左《根《右。
*///
演算法實現:
class
solution
treenode *t =s.top();
s.pop();
if (pre && t->val <= pre->val)
return
false
; pre =t;
p = t->right;
}return
true
; }
};
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 如果對二叉搜尋樹不夠了解,可能...