NowCoder 二叉搜索树的后序遍历序列 递归

拈花ヽ惹草 提交于 2020-01-31 03:03:42

题意:给一串序列,判断该序列是否某二叉树的后序遍历序列
思路:后序遍历最后一个节点为根节点,前面的都可以分成连续的两部分,一部分比根节点小,另一部分比根节点大,依次分块递归判断两部分是否连续即可

public class Solution {
    public boolean VerifySquenceOfBST(int [] sequence) {
        if (sequence == null || sequence.length == 0)
            return false;
        return solve(sequence, 0, sequence.length-1);
    }
    public boolean solve(int[] a, int l, int r) {
    	if (l >= r)
    		return true;
        int i = l, root = a[r], mid;
        for (; i < r; i++) {
            if (a[i] > root)
                break;
        }
        mid = i;
        for (; i < r; i++) {
            if (a[i] < root)
                return false;
        }
        return solve(a, l, mid-1) && solve(a, mid, r-1);
    }
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!