一、题目描述
循环输入。输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回
true
,否则返回false
。假设输入的数组的任意两个数字都互不相同。当没有任何输入时,程序结束。
二、解题思路
难度:🔴🔴🔴🔴⚪
1)从后序遍历的定义出发,先左子树,再右子树,最后根结点。所以,这个序列的最后一个元素,一定是根结点,且所有小于它的元素作为左子树,所有大于它的元素作为右子树;
2)如果能够分成这样两部分,则递归计算左右子树;
3)否则,在出现第一个大于 最后一个元素的情况下,又出现小于 最后一个元素的情况,则表示这是一种非法情况,直接返回false
。
考虑最坏情况下,会退化成链,所以时间复杂度为