题解 | #二叉搜索树的后序遍历序列#

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

http://www.nowcoder.com/practice/a861533d45854474ac791d90e447bafd

import java.util.Arrays;
import java.util.Stack;

public class Solution {
    public boolean VerifySquenceOfBST(int [] sequence) {
        if(sequence.length==0) return false;
        //左右根
        //中序:左根右 也就是这个数组从小到大排序 
        int [] mid = Arrays.copyOf(sequence,sequence.length);
        Arrays.sort(mid);
        // 存不存在入栈顺序是mid 出栈顺序是后序的情况
        
        int n = mid.length;
        Stack<Integer>st = new Stack<Integer>();
        int i = 0, j = 0; //i指向入栈序列 j表示匹配成功出栈的数量
        while(i<n){
            st.add(mid[i]); //入栈
            while(!st.isEmpty() && st.peek().equals(sequence[j])){
                j++; //匹配上了
                st.pop();
            }
            i++;
        }
        return j==n;
    }
    
}


解题思路: 给出入栈队列 判断出栈队列是否合法

https://blog.nowcoder.net/n/50f7f77ddcd14a1d868194130a423cab

全部评论

相关推荐

牛客279957775号:铁暗恋
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务