剑指offer第23题(二叉搜索树的后序遍历)

来源:互联网 发布:淘宝客助手免费版 编辑:程序博客网 时间:2024/05/16 03:34

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

思想:在二叉搜索树中左子树的节点小于根节点,找到左子树;

           在二叉搜索树中左子树的节点小于根节点,找到右子树;

           然后判断左子树是不是二叉搜索树,右子树是不是二叉搜索树。

二叉搜索树的特点:左子树的值小于等于根节点,右子树的值大于等于根节点。

java代码:

public class Solution {    public boolean VerifySquenceOfBST(int [] sequence) {        if(sequence.length==0){            return false;        }        return isRight(sequence,0,sequence.length-1);    }    public boolean isRight(int[]sequence,int start,int end){        if(end<=start){            return true;        }        int i=start;        for(;i<end;i++){            if(sequence[i]>sequence[end]){                break;            }        }        for(int j=i;j<end;j++){            if(sequence[j]<sequence[end]){                return false;            }        }        return isRight(sequence,start,i-1)&&isRight(sequence,i,end-1);    }}

阅读全文
0 0