二叉搜索树的后序遍历序列-Java
二叉搜索树的后序遍历序列
http://www.nowcoder.com/questionTerminal/a861533d45854474ac791d90e447bafd
一. 思路
按照平时的判断方法去想。只理解到使用递归思想。
前序遍历是根、左子树、右子树;
中序遍历是左子树、根、右子树;
后序遍历是左子树、右子树、根;
核心思路就是找到根,区分左右子树,判断是否违反了二叉搜索树的原则,即左子树<根<右子树。
二. 代码
public class Solution { public boolean VerifySquenceOfBST(int [] sequence) { if (sequence == null || sequence.length == 0) return false; return helpVerify(sequence, 0, sequence.length-1); } public boolean helpVerify(int [] sequence, int start, int root) { if (start > root) return true; int i; //中序遍历是:左子树、右子树、根 //找到左右子树的分界点 for (i = start; i < root; i++) { if (sequence[i] > sequence[root]) break; } //在右子树中判断是否有小于root的值,若有则返回false for (int j = i; j < root; j++) { if (sequence[j] < sequence[root]) return false; } return helpVerify(sequence, start, i-1) && helpVerify(sequence, i, root-1); } }