LeetCode98 驗證二叉搜尋樹

2021-09-29 04:59:12 字數 1387 閱讀 9885

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

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

示例 1:

輸入:

2/ \

1 3

輸出: true

示例 2:

輸入:

5/ \

1 4

/ \3 6

輸出: false

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

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

解法一:中序遍歷,如果是乙個有效的額二叉搜尋樹,那麼中序遍歷的結果會是乙個公升序的序列。 時間複雜度o(n)

public

boolean

isvalidbst

(treenode root)

list

list =

newarraylist

();helper

(root, list)

;for

(int i =

0; i < list.

size()

-1; i++)}

return

true;}

public

static

void

helper

(treenode root, list list)

helper

(root.left, list)

; list.

add(root.val)

;helper

(root.right, list)

;}

遍歷時不需要保留整個序列,只需要保留前繼節點即可。

int pre = integer.min_value;

public

boolean

isvalidbst

(treenode root)if(

isvalidbst

(root.left))}

return

false

;}

解法二:遞迴 先判斷當前節點是否符合要求,符合的話,繼續判斷左右節點。 時間複雜度o(n)

public

boolean

isvalidbst

(treenode root)

private

boolean

helper

(treenode root,

long min,

long max)

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 如果對二叉搜尋樹不夠了解,可能...