美文网首页
二叉搜索树的后序遍历序列

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

作者: youzhihua | 来源:发表于2020-01-13 17:48 被阅读0次

题目描述

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

思路

  1. 二叉搜索树满足根节点的值大于左孩子并且小于右孩子。
    2.二叉树的后序遍历顺序是:左->右->根,所以序列的最后一位是根节点的值。
    3.递归处理后序遍历的数组,每次都找到根节点(最后一个元素),左右孩子的分界点。
    4.若left>=right,说明序列没问题,结束递归。

Java代码实现

public class Solution {
    public boolean VerifySquenceOfBST(int [] sequence) {
        if(sequence.length == 0)
            return false;
        return VerifySquenceOfBST(sequence,0,sequence.length-1);
    }

    private boolean VerifySquenceOfBST(int [] sequence,int left,int right){
        if(left >= right){
            return true;
        }
        int rootVal = sequence[right];
        int mid = right-1;
        //寻找分界点
        while (mid >=left) {
            if(sequence[mid]<rootVal){
                break;
            }
            mid--;
        }
        for (int i = left; i <= mid; i++) {
            if(sequence[i] > rootVal){
                return false;
            }
        }
        return VerifySquenceOfBST(sequence,left,mid)&&VerifySquenceOfBST(sequence,mid+1,right-1);
    }
}

相关文章

网友评论

      本文标题:二叉搜索树的后序遍历序列

      本文链接:https://www.haomeiwen.com/subject/oudnactx.html