二叉搜索树的后序遍历序列

来源:互联网 发布:2016最新淘宝网店书籍 编辑:程序博客网 时间:2024/06/06 02:21

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

思路:最后一个元素是根节点,以根结点为标志,从前往后找到第一个比它大的数字,记录下这个位置作为中间位置。继续往下比,如果后边的元素比它小,就返回false。中间位置前是左子树,后面位置是右子树,递归遍历左右子树即可。

public class Solution {    public boolean VerifySquenceOfBST(int [] sequence) {        if(sequence.length == 0)            return false;        return judgeTree(0,sequence.length-1,sequence);    }    public boolean judgeTree(int start,int end,int[] sequence){        if(start >= end)            return true;        int rootValue = sequence[end];        int mid = end;        for(int i = start ; i < end ; i++){            if(sequence[i] > rootValue){                mid = i;                break;            }        }        for(int i = mid; i < end;i++){            if(sequence[i] < rootValue)                return false;        }        return judgeTree(start,mid -1,sequence) && judgeTree(mid,end -1,sequence);    }}
原创粉丝点击