标签:amp 边界条件 解决 后序遍历 seq keyword 输入 后序遍历序列 eof
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
对于一个区间[begin,end]判断是否是搜索二叉树:
①取int val=arr[end];
②i从[begin,end-1]开始遍历区间,直到找到一个大于val的元素break或者循环结束,此时的i是第一个大于val的元素或者是end,于是构建2个子数组是[begin,i-1]和[i,end-1].对这2个子数组再调用递归方法即可。
注意:上面有2个特殊情况,当begin<i-1即左子树为null,于是数组第一个元素就大于val,于是i=begin,显然begin>i-1,即begin>end或者i<end-1即右子树为null,于是当[begin,end-1]所有元素都遍历完成后都没有找到大于val的元素,于是此时i=end,于是i>end-1,即begin>end。
边界条件:递归判断一个数组[a,b]是否是搜索二叉树,终止条件就是某侧的子树为null,于是当遇到begin<i-1或者i<end-1就return结束递归即可,即边界条件是:begin>end。
标签:amp 边界条件 解决 后序遍历 seq keyword 输入 后序遍历序列 eof
原文地址:http://www.cnblogs.com/joshsung/p/7407214.html