Given an array of numbers, verify whether it is the correct preorder traversal sequence of a binary search tree.
You may assume each number in the sequence is unique.
It is not easy to achieve O(1) space.
# Time: O(n) # Space: O(1) class Solution: # @param {integer[]} preorder # @return {boolean} def verifyPreorder(self, preorder): low, i = float("-inf"), -1 for p in preorder: if p < low: return False while i >= 0 and p > preorder[i]: low = preorder[i] i -= 1 i += 1 preorder[i] = p return True
No comments:
Post a Comment