給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。
乙個二叉搜尋樹有如下定義:
左子樹只包含小於當前節點的數。
右子樹只包含大於當前節點的數。
所有子樹自身必須也是二叉搜尋樹。
示例 1:
2 / \
1 3二叉樹[2,1,3], 返回 true.
示例 2:
1 / \
2 3二叉樹 [1,2,3], 返回 false.
c++解法
/**
* definition for a binary tree node.
* struct treenode
* };
*/class solution
return
true;
}private:
void inorder(treenode* root, vector
&v)
}};
python解法# definition for a binary tree node.
# class treenode:
# def __init__(self, x):
# self.val = x
# self.left = none
# self.right = none
class
solution:
definorder
(self, root, arr):
if root:
self.inorder(root.left, arr)
arr += [root.val]
self.inorder(root.right, arr)
defisvalidbst
(self, root):
""" :type root: treenode
:rtype: bool
"""arr =
self.inorder(root, arr)
for i in range(1, len(arr)):
if arr[i-1] >= arr[i]:
return
false
return
true
leetcode 刷題日記
將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。採用乙個帶頭節點的指標head鏈結合併後的新指標,乙個空指標pre進行迴圈載入兩個鍊錶中的節點比較兩個鍊錶節點的值,pre指標鏈結較小值的鍊錶的節點,依次遍歷兩個鍊錶,直到乙個為空停止迴圈。複雜度分析 時間複...
leetcode 刷題日記
題目 給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。解題思路 按照最長鍊錶的長度遍歷兩個...
leetcode刷題日記
給你兩個陣列,arr1 和 arr2,arr2 中的元素各不相同 arr2 中的每個元素都出現在 arr1 中 對 arr1 中的元素進行排序,使 arr1 中項的相對順序和 arr2 中的相對順序相同。未在 arr2 現過的元素需要按照公升序放在 arr1 的末尾。示例 輸入 arr1 2,3,1...