剑指Offer:二叉搜索树的后序遍历序列(JAVA实现)

原题

考点:
栈、数、递归
二叉搜索树、后序遍历

思路:

  1. 每次将二叉树分割成两部分,左子树与右子树
  2. 如果节点数量<=1,则返回True
  3. 如果节点数量不小于1,就要判断该子树是否符合后序遍历、的特点

主要有两个判断点:
p == j,用于判断是否是后序遍历
recur(),用于判断子树

class Solution {
    public boolean verifyPostorder(int[] postorder) {
        return recur(postorder,0,postorder.length-1);
    }

    public boolean recur(int[] postorder,int start,int end){
        if(start >= end){
            return true;
        }
        int p = start;
        while(postorder[p] < postorder[end]){
            p++;
        }
        int m = p;
        while(postorder[p] > postorder[end]){
           p++; 
        }
        return p == end && recur(postorder,start,m-1) && recur(postorder,m,end-1);
    }
}
上一篇:1086 Tree Traversals Again (25 分)


下一篇:106. 从中序与后序遍历序列构造二叉树