搜索栏搜索网站?热?文,市场调研流程,有哪些免费推广网站,wordpress老提示更新1. 题目
输入一个整数数组#xff0c;判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true#xff0c;否则返回 false。假设输入的数组的任意两个数字都互不相同。
参考以下这颗二叉搜索树#xff1a;5/ \2 6/ \1 3
示例 1#xff1a;
输入: [1,6,3,2,5]…1. 题目
输入一个整数数组判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true否则返回 false。假设输入的数组的任意两个数字都互不相同。
参考以下这颗二叉搜索树5/ \2 6/ \1 3
示例 1
输入: [1,6,3,2,5]
输出: false示例 2
输入: [1,3,2,6,5]
输出: true提示
数组长度 1000来源力扣LeetCode 链接https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。
2. 解题
二叉搜索树左子树root, 右子树root后序左右根根在最后
class Solution {
public:bool verifyPostorder(vectorint postorder) {if(postorder.size() 2)return true;return check(postorder,0,postorder.size()-1);}bool check(vectorint order, int L, int R) {if(L R)//区间只有1个或者没有元素了return true;int root order[R];//根int i L, j R-1;//左子树的区间指针i右子树jwhile(i R order[i] root)i;while(j L order[j] root)j--;if(i-j ! 1)//最终j应该紧贴i的左侧return false;return check(order,L,i-1) check(order,j1,R-1);//递归查找2侧子树}
};