[以降] 23.オファーは、Pythonを実装し、バイナリ検索ツリートラバーサルシーケンスを受賞します

タイトル説明

整数配列を入力して、アレイは、バイナリ検索ツリーをトラバースした後決意の結果ではありません。もし出力はい、そうでなければ出力号 任意の2つの数の入力配列が異なっていると仮定する。

思考

指定された整数配列を分析してバイナリ検索ツリーの配列ではないプレオーダートラバーサル
重複する値がに含まれていない整数配列
の最後の値は、ルートノードの値よりもより小さい根、ある整数のシーケンスは、左の部分木であり、そして残りこれは、再帰的なサブツリーについて、右のサブツリーです

コード

クリアな思考コード - 再帰的に

class Solution:
    def VerifySquenceOfBST(self, sequence):
        length = len(sequence)
        if length:
            root = sequence[-1]  # 找到根节点
            left = 0
            while sequence[left] < root:
                left += 1
            right = left
            while right < length - 1:
                if sequence[right] < root:
                    return False
                right += 1
            left_ret = True if left == 0 else self.VerifySquenceOfBST(sequence[:left])
            right_ret = True if left == right else self.VerifySquenceOfBST(sequence[left:right])
            return left_ret and right_ret
        return False

if __name__ == '__main__':
    s = Solution()
    print(s.VerifySquenceOfBST([4, 5, 8, 3, 9, 10, 7]))
    print(s.VerifySquenceOfBST([4, 5, 6, 3, 8, 9, 7]))
公開された99元の記事 ウォンの賞賛6 ビュー3981

おすすめ

転載: blog.csdn.net/weixin_42247922/article/details/103981017