《剑指offer》-判断某整数数组是不是某二叉搜索树后序遍历的结果
2018-02-01 15:26
246 查看
/* * 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。 * 如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 * 思路:二叉排序树:左子树比根节点小,右子树比根节点大。 * 从后序遍历的结果来看,可以划分成前面一段(左子树)和中间一段(右子树) * 确定左子树、右子树的起点和终点,分别对他们递归。 * 递归的终止条件是:起点、终点重合(到叶子节点) */ public class VerifySquenceOfBST { public boolean verifySquenceOfBST(int [] sequence) { if(sequence.length == 0) return false; return isResult(0, sequence.length - 1, sequence); } public boolean isResult(int start, int end, int [] seq) { //System.out.println(start + " " + end); if(end <= start) return true; int i = start; for(;i < end;i ++) { if(seq[i] > seq[end]) //找到右子树的起点 break; } for(int j = i;j < end;j ++) { if(seq[i] < seq[end]) return false; } return isResult(start, i - 1, seq) && isResult(i, end - 1, seq); } public static void main(String[] args) { int [] seq = {2,9,5,15,19,10,12}; System.out.println(new VerifySquenceOfBST().verifySquenceOfBST(seq)); } }
相关文章推荐
- 《剑指Offer》输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
- 输入一个整数数组,判断该数组是不是某个二叉搜索树的前序遍历结果
- 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果
- 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
- 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
- 剑指offer_输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果
- 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
- 【剑指offer24】输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
- 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
- java实现输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果
- java 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
- Java实现:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。
- java 输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果
- 二叉搜索树的后序遍历序列输入一个整数数组,判断该数组是不是二叉搜索树的后序遍历序列
- 输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果
- 输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果
- 【算法-java】判断该数组是不是某二叉搜索树的后序遍历的结果
- 【数据结构】【输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果】
- 输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果
- 判断一个整数数组是不是二叉搜索树的后序遍历序列