給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。
假設乙個二叉搜尋樹具有如下特徵:
示例 1:
輸入:2示例 2:/ \1 3輸出:true
輸入:5需要注意的是,「左/右子樹」是指左/右分支下所有的子節點,而不是只有最近的兩個。我開始就理解錯了。/ \1 4
/ \3 6輸出:false解釋:輸入為: [5,1,4,null,null,3,6]。
根節點的值為 5 ,但是其右子節點值為 4 。
提供乙個很簡單的思路,從根節點開始,驗證左子樹是不是滿足「只包含小於當前節點的數」,驗證右子樹是不是滿足「只包含大於當前節點的數」,然後遞迴驗證每乙個節點。
驗證左/右子樹是不是滿足條件,只要遍歷一遍即可,也是使用了遞迴。
class solution
bool isbigger(int x, treenode *node)
bool isvalidbst(treenode* root)
};
也順便貼上開始理解錯誤的**。本來寫完還覺得自己很帥,其實不存在的。
//錯誤的解法
class solution
};
LeetCode 驗證二叉搜尋樹
給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。假設乙個二叉搜尋樹具有如下特徵 節點的左子樹只包含小於當前節點的數。節點的右子樹只包含大於當前節點的數。所有左子樹和右子樹自身必須也是二叉搜尋樹。示例 1 輸入 2 1 3 輸出 true 示例 2 輸入 5 1 4 3 6 輸出 false 解釋 ...
驗證二叉搜尋樹(leetcode)
給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。假設乙個二叉搜尋樹具有如下特徵 節點的左子樹只包含小於當前節點的數。節點的右子樹只包含大於當前節點的數。所有左子樹和右子樹自身必須也是二叉搜尋樹。1.遞迴 2020.5.5 9 09 definition for a binary tree node...
Leetcode 驗證二叉搜尋樹
給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。假設乙個二叉搜尋樹具有如下特徵 節點的左子樹只包含小於當前節點的數。節點的右子樹只包含大於當前節點的數。所有左子樹和右子樹自身必須也是二叉搜尋樹。示例 1 輸入 2 1 3 輸出 true 示例 2 輸入 5 1 4 3 6 輸出 false 解釋 ...