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





