标签:class 假设 color while 判断 length ++ 处理 后序遍历序列
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
和之前做的二叉搜素树的中序遍历有相似之处
这个题的思路也是借助二叉搜素树的特性来做。
找到根结点,然后从头遍历直到找到比这个点大的点 左边的为左子树 右边的右子树,然后遍历右子树 如果有比这个小的 就不符合 返回false
然后继续递归处理左右子树
public class Solution { public boolean VerifySquenceOfBST(int [] sequence) { if(sequence == null || sequence.length==0){ return false; } return judge(sequence,0,sequence.length-1); } public boolean judge(int[] sequence,int left,int right){ if(left >= right){ return true; } while(sequence[left] < sequence[right]){ left ++; } for(int i=left+1;i < right;i ++){ if(sequence[i] < sequence[right]){ return false; } } return judge(sequence,0,left-1) && judge(sequence,left,right-1); } }
标签:class 假设 color while 判断 length ++ 处理 后序遍历序列
原文地址:https://www.cnblogs.com/nlw-blog/p/12426346.html