剑指offer 23:二叉搜索树的后序遍历--- Java实现

剑指offer每日一题算法题(java解法)

方便日后复习,从今天开始。

算法之行始于足下

[编程题]二叉搜索树的后序遍历-- Java实现

------------------------------------------------------------------------------------------------------
题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。

解题思路:
最后一个数字是树的根节点 ,数组中前面的数字可以分为两部分:第一部分是左子树节点 的值,都比根节点的值小;第二部分 是右子树 节点的值,都比 根 节点 的值大,后面用递归分别判断前后两部分 是否 符合以上原则

可以看一篇写的不错的,也是讲这题二叉搜索树的后序遍历

public class Solution {
    public boolean VerifySquenceOfBST(int [] sequence) {
         if(sequence.length == 0) return false;
         return IsTreeBST(sequence, 0, sequence.length-1);
    }
    public boolean IsTreeBST(int [] sequence,int start,int end ){
        if(end <= start) return true;
        int i = start;
        for (; i < end; i++) {
             if(sequence[i] > sequence[end]) break;
        }
        for (int j = i; j < end; j++) {
            if(sequence[j] < sequence[end]) return false;
        }
        //递归调用
        return IsTreeBST(sequence, start, i-1) && IsTreeBST(sequence, i, end-1);
    }
}
发布了52 篇原创文章 · 获赞 10 · 访问量 1532

猜你喜欢

转载自blog.csdn.net/jiohfgj/article/details/103123356