前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >剑指offer 二叉搜索树的后序遍历序列

剑指offer 二叉搜索树的后序遍历序列

作者头像
week
发布2018-12-12 15:42:30
2620
发布2018-12-12 15:42:30
举报
文章被收录于专栏:用户画像用户画像

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。

代码语言:javascript
复制
package offer.verifySquenceOfBST;

import java.util.ArrayList;
public class Solution {
    public static void main(String[] args) {
        int[] array={4,8,6,12,16,14,10};
        Solution solution=new Solution();
        boolean bool=solution.VerifySquenceOfBST(array);
        System.out.print(bool);
    }
    public boolean VerifySquenceOfBST(int [] sequence) {
        if(sequence.length==0){
            return false;
        }
        if(sequence.length==1){
            return true;
        }
        int mid = sequence[sequence.length-1];
        ArrayList<Integer> left = new ArrayList<Integer>();
        ArrayList<Integer> right = new ArrayList<Integer>();
        int i=0;
        for(i=0;i<sequence.length-1;i++){
            int item = sequence[i];
            if(item < mid){
                left.add(item);
            }else{
                break;
            }
        }
        for(int j=i;j<sequence.length-1;j++){
            int item = sequence[j];
            if(item > mid){
                right.add(item);
            }else{
                break;
            }
        }
        int leftSize =left.size();
        int rightSize =right.size();
        if((leftSize+rightSize)!=(sequence.length-1)){
            return false;
        }
        boolean leftFlag=true;
        boolean rightFlag=true;
        if(leftSize>0){
            int[] leftIntArray=transfer(left,leftSize);
            leftFlag = VerifySquenceOfBST(leftIntArray);
        }
        if(rightSize>0){
            int[] rightIntArray=transfer(right,rightSize);
            rightFlag = VerifySquenceOfBST(rightIntArray);
        }
        if(leftFlag && rightFlag){
            return true;
        }else{
            return false;
        }
    }
    public static int[] transfer( ArrayList<Integer> list,int size){
        Integer[] arrayInteger=list.toArray(new Integer[size]);
        int[] arrayInt =new int[size];
        for(int i=0;i<size;i++){
            arrayInt[i]=arrayInteger[i];
        }
        return arrayInt;
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年11月14日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档