[leetcode]剑指 Offer 33. 二叉搜索树的后序遍历序列
文章目录
题目
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。
参考以下这颗二叉搜索树:
5
/ \
2 6
/ \
1 3
示例 1:
输入: [1,6,3,2,5] 输出: false 示例 2:
输入: [1,3,2,6,5] 输出: true
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof
解题思路
参考:题解
二叉树后序遍历的顺序是:左->右->根,所以数组最后一个元素是根节点。
二叉树搜索树的特性:
* 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
* 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
* 它的左、右子树也分别为二叉搜索树
1. 从数组第0个元素开始往后找到第一个比根节点大的元素,该元素记为分割节点
2. 从分割节点到根结点的元素都要比跟节点大
3. 左右子树都应该满足1和2,递归即可,当分割的子树只有一个时,返回true,递归终止
代码实现
|
|
文章作者 丛文
上次更新 2022-08-03