געגעבן אַ ביינערי בוים, טשעק אויב עס איז אַ ביינערי זוכן בוים?
א ביינערי זוך בוים (BST) איז אַ ביינערי בוים ווו יעדער נאָדע האט אַ ווערט אַזאַ אַז: - די ווערט סטאָרד אין די לינקס סובטריע פון אַ נאָדע מוזן זיין ווייניקער ווי די ווערט פון די נאָדע. - די ווערט סטאָרד אין די רעכט סובטריע פון אַ נאָדע מוזן זיין גרעסער ווי אָדער גלייַך צו די ווערט פון די נאָדע. - ביידע לינקס און רעכט סובטריעס מוזן אויך זיין ביינערי זוכן ביימער. צו קאָנטראָלירן אויב אַ ביינערי בוים איז אַ ביינערי זוכן בוים, איר קענען דורכפירן אַן אין-סדר דורכפאָר פון דעם בוים און קראָם די וואַלועס אין אַ רשימה. די אין-סדר טראַווערסאַל פון אַ BST טראגט די וואַלועס אין די סאָרטירט סדר. אַזוי אויב די רשימה איז אויסגעשטעלט אין אַסענדינג סדר, די ביינערי בוים איז אַ BST. אַנדערש, עס איז נישט. ווי אַזוי איר קענען ינסטרומענט די אויבן צוגאַנג אין פּיטהאָן: ```python def isBST(בוים): def in_order_traverse(בוים, וואַלועס): אויב בוים איז ניט קיין: in_order_traverse(tree.left, וואַלועס) values.append(tree.val). ) in_order_traverse(tree.right, וואַלועס) וואַלועס = [] in_order_traverse(בוים, וואַלועס) צוריקקומען אַלע (וואַלועס [איך] <= וואַלועס [איך + 1] פֿאַר איך אין קייט (לענ (וואַלועס) - 1)) ``` אן אנדער צוגאַנג איז צו רעקורסיוולי קאָנטראָלירן יעדער נאָדע מיט זיין לינקס און רעכט קינד. דעם וועג איר טאָן ניט דאַרפֿן צו קראָם די וואַלועס אין אַ רשימה. אַזוי איר קענען ינסטרומענט דעם אין פּיטהאָן: ```python def isBST(בוים): def is_bst_helper(בוים, min_value=float('-inf'), max_value=float('inf')): אויב בוים איז גאָרניט: צוריקקומען אמת אויב נישט מינ_וואַלוע <= טרי.וואַל <= מאַקס_וואַלוע: צוריקקומען פאַלש צוריקקומען איז_בסט_העלפּער (טריע.לעפט, מינ_וואַלוע, טרי.וואַל) און איז_בסט_העלפּער (טריע.רעכט, טרי.וואַל, מאַקס_וואַליו) צוריקקומען איז_בסט_העלפּער (בוים) ```