2022-7-3 二叉搜索树-递归
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 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 }
思路:递归,后序遍历最后一个 是根节点,前面分为左子树和右子树分别小于根和大于根,对于子树再递归判断是否为二叉搜索树。