ツリーを表すリストが与えられているかどうか、ツリーが有効なBSTであるかどうかを判断する必要があります(この質問はleetcodeから取られます)。私はこれについて他の投稿を見ましたが、明らかに正しくないので、誰かが私のアプローチで私を助けることができるかどうか疑問に思っていました。たとえば、ツリー[1,2,3]の場合、1がルート、2が左の子、3が右の子です。私のコードはtrueを返します。うまくいけば、わずかな変更だけで済みますが、関数全体のアプローチが間違っている可能性があります。ツリーが有効なBSTかどうかを判断する機能?
は、ここに私のコードです:最小/最大値をとるヘルパー関数と
def isValidBST(self, root):
if (root == None):
return True
if (root.left == None or root.left.val < root.val):
return self.isValidBST(root.left)
if (root.right == None or root.right.val > root.val):
return self.isValidBST(root.right)
return False
第二に、私が見てきたアプローチが、それは私を混乱させる。なぜ誰かがそのアプローチが良い/より良いものである理由を説明したいと思うなら、それは非常に高く評価されるでしょう!
..またはroot.left '場合).val < root.val'はfalseです。すぐに 'False'を返してはいけませんか? (そして、同じ - 逆の - 正しいために) – usr2564301
"ツリーを表すリスト"がどこにあるか分かりません –
'None'と比較すると' is None'を使用しますhttp://stackoverflow.com/questions/3257919/what-is-the-none-none-none-and-none –