题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。

i c } m l p a o s r s f } t u F n F o c o r i } l v w } v w } v i } v i } r u 2 i f e a h a h a f a f e n 4 s t r i r i r r t d S P n l l i i u a o o . r r i e i j e i } j l l r r r t l s c e o f e > e i < i n i u t o t o = n + = j + f f g g o t O u u t [ = n = t 0 t h l h l n i r n r 0 i i < [ r t e t e o d t n = ] 1 j e 1 = { = n f n e l ] t = = t r = f n < e u t i - { ( = a [ n < r r s t i & _ l l r n u P r 1 s & 0 s e o - r e o u P n e n o o f s e { o r : t 1 o a t s i - t l O t g [ & { s r O h I l 1 & { e d r t n e ] e d t n i r e ] ( r , = < n ( _ = , A l r l 0 e i r e n ) a n { y : - ( n I 1 [ n i t { . ) . . j ] ) B , o o j l - { i )

算法思想:通过举例子分析,寻找规律,先判断根结点的整颗树是否满足二叉搜索树左小右大的规律,再判断各个子树是否同样满足这种规律。子问题和问题本身是等价的,所以使用递归即可实现子树的判断。

github地址:https://github.com/cubegao/LeetCode