每天一个算法之是否为后续遍历序列
2016-11-04 14:46
323 查看
import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class backPrint { static Scanner sc=new Scanner(System.in); static Queue<BinaryTree> queue=new LinkedList<BinaryTree>(); public static void main(String args[]){ int[] a={5,6,7,9,11,10,8}; System.out.println(isback(a,0,a.length-1)); } //后序遍历序列的最后一个是根,根左子树都小于根,右子树都大于根。如果不满足这个条件必然不是后续遍历。然后递归判断左子树和右子树的数据。 public static boolean isback(int[] seq,int start,int end){ int lenght=end-start; if(lenght==0) return false; int root=seq[lenght]; int i=start; for(;i<lenght-1;i++){ if(seq[i]>root)break; } int j=i; for(;j<lenght-1;j++){ if(seq[j]<root)return false; } boolean left=true; if(i-1>start){ left=isback(seq,start,i-1); } boolean right=true; if(i<end-1){ left=isback(seq,i,end-1); } return left&&right; } }
相关文章推荐
- 算法--判断一个数字序列是否为二叉排序树的后续遍历
- 判断一个序列是否为某二叉搜索树的后续遍历结果
- 判断一个序列是否时二叉排序树的后续遍历序列
- 剑指offer:二叉搜索树的后序遍历序列(判断一个数组是否是二叉搜索树的后续遍历序列)
- 每天一个算法之判断栈的压入弹出序列
- 【100题】第九题(整数序列是否是二叉查找树后续遍历)
- 算法--根据二叉树前序和中序遍历序列,求后续遍历序列
- 判断一个数据序列是否是BST后序遍历的结果
- 判断一个序列是否是另外一个序列的子序列的算法
- 判断一个数组是否是一棵树的后续遍历
- 每天一个算法之根据前序中序序列重建二叉树
- 每天学习一算法系列(9) (输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果)
- 程序员算法之判断序列是否是二叉查找树的后续
- 每天一个算法之字符串子序列
- Solution 9: 判断序列是否为BST的后续遍历结果
- 《剑指offer》:[24]判断一个序列是否为二叉树的后序遍历序列
- 输入一个数列,判断是否为某一个二叉搜索树的后序遍历序列
- 每天学习一算法系列(27)(输入两个整数序列。其中一个序列表示栈的push 顺序,判断另一个序列有没有可能是对应的pop 顺序)
- 笔试算法题(35):最长递增子序列 & 判定一个字符串是否可由另一个字符串旋转得到
- 数据结构:题目(3)测试一个数组序列是否是二叉树的前序遍历或者后序遍历结果