5.5日簽到題。難度中等題。(感覺算不上中等題的難度)
給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。
假設乙個二叉搜尋樹具有如下特徵:
節點的左子樹只包含小於當前節點的數。
節點的右子樹只包含大於當前節點的數。
所有左子樹和右子樹自身必須也是二叉搜尋樹。
我的思路:我想到的有兩種解法:
1.形式上簡單,時間空間複雜度較高。用遞迴直接中序遍歷得到該二叉樹的排序,如果符合條件,那麼這個序列就是嚴格的遞增序列,否則不符合。非遞迴遍歷道理一樣,只是執行時間較短。
2.直接把根節點放入乙個linklist,判斷當前節點和其子節點的大小關係。情況有以下幾種:
a. 左孩子的左孩子(若存在) < 左孩子
b.左孩子的的右孩子 > 左孩子 && 左孩子的右孩子 < 該節點 (若左的右不存在,則改為左和該比較)
c. 右孩子的左孩子 > 該節點 && 右孩子的左孩子 < 右孩子(若右的左不存在,則改為右和該比較)
d.右孩子的右孩子(若存在) > 右孩子
這幾個判斷我認為是比較麻煩的,所以我選擇的是第一種方法。
**如下:
linkedlistintlist = new linkedlist();
public void middle(treenode root)
public boolean isvalidbst(treenode root)
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 如果對二叉搜尋樹不夠了解,可能...