2022-7-3 二叉搜索树-递归

剑指 Offer 33. 二叉搜索树的后序遍历序列

难度中等

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

 1 class Solution {
 2     public boolean verifyPostorder(int[] postorder) {
 3         return verify(postorder,0,postorder.length-1);
 4     }
 5 
 6     public boolean verify(int[] postorder,int s,int e){
 7         if (s>=e) return true;
 8         int num=postorder[e];
 9         int index=s;
10         while (index<e&&postorder[index]<num) index++;
11         for (int i=index;i<e;i++){
12             if (postorder[i]<num) return false;
13         }
14         if (verify(postorder,s,index-1)&&verify(postorder,index,e-1)) return true;
15         return false;
16     }
17 }

思路:递归,后序遍历最后一个 是根节点,前面分为左子树和右子树分别小于根和大于根,对于子树再递归判断是否为二叉搜索树。

posted on 2022-07-03 20:03  阿ming  阅读(20)  评论(0编辑  收藏  举报

导航