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

来源:互联网 发布:证件拍照软件下载 编辑:程序博客网 时间:2024/06/06 13:22

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

public class Solution {    boolean res = true;    public boolean VerifySquenceOfBST(int [] sequence) {        int length = sequence.length;        if(sequence==null || length<=0) return false;        if(length==1 || length==2) return true;        VerifySquenceOfBSTCore(sequence,0,length-1);        return res;    }    public void VerifySquenceOfBSTCore(int[] nums, int start, int end){        if(start>=end) return;        int root = nums[end];        int i = start;        while(i<end && nums[i]<root){            i++;        }        for(int j=i; j<end; j++){            if(nums[j]<root){                res = false;                break;            }        }        VerifySquenceOfBSTCore(nums,start,i-1);        VerifySquenceOfBSTCore(nums,i+1,end-1);    }}

思路:二叉搜索树的后序遍历序列最后一个节点是根节点,比根节点小的是左子树,比根节点大的是右子树,递归遍历是不是每一个左子树的节点都比根节点小而每一个右子树的节点都比根节点大

原创粉丝点击