下記のコードで正常系BSTの確認をするコードは実装できましたが、[0,-1]
のような片方しかないTree構造の場合のエッジケースがカバーできません。
そのエッジケースに特化したコードを実装しようとすると、こんごは正常系BSTのvalidateが通らなくなるコードができてしまいます。
下記Stackで実装されたコードをちょっとこう変えるだけでエッジケースのカバーができるなどお気づきの点ありましたらご教示いただけませんしょうか?
Given the root of a binary tree, determine if it is a valid binary search tree (BST).
A valid BST is defined as follows:
The left subtree of a node contains only nodes with keys less than the node's key.
The right subtree of a node contains only nodes with keys greater than the node's key.
Both the left and right subtrees must also be binary search trees.
98. Validate Binary Search Tree
Stackで実装したBSTのvalidationコード
python
1# Definition for a binary tree node. 2# class TreeNode: 3# def __init__(self, val=0, left=None, right=None): 4# self.val = val 5# self.left = left 6# self.right = right 7class Solution: 8 def isValidBST(self, root: Optional[TreeNode]) -> bool: 9 if not root: 10 return False 11 12 if not root.left and not root.right: 13 return True 14 15 stack = [[root, root.val]] 16 left_val, right_val = -float("inf"), -float("inf") 17 while stack: 18 curr, val = stack.pop() 19 20 if curr.left: 21 stack.append([curr.left, curr.left.val]) 22 left_val = curr.left.val 23 24 if curr.right: 25 stack.append([curr.right, curr.right.val]) 26 right_val = curr.right.val 27 28 if left_val < val < right_val: 29 return True 30 else: 31 return False 32 33 return True 34
成功する。
Your input [2,1,3] Output true Expected true
下記のインプットの場合のエッジケースをどうすればカバーできるか。
Input: [0,-1] Output: false Expected: true
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。