剑指offer之二叉搜索树的后序遍历序列

题目:二叉搜索树的后序遍历序列
描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。
如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
思路:
从前往后,如果遇到一个比最后一个元素大的节点,则说明他前面的都要“小于”他
并且他后面到最后一个元素之间的节点,都要“大于”他
二叉搜索树 左节点小于根节点 右节点大于根节点
12
5 18
4 7 15 19
后序遍历为 4 7 5 15 19 18 12

public boolean VerifySquenceOfBST(int[] sequence) {
        if (sequence.length == 0) return false;
        int last = sequence[sequence.length - 1];
        for (int i = 0; i < sequence.length - 1; i++) {
            //如果大于最后一个节点
            if (sequence[i] > last) {
                //则它前面都必定小于最后节点
                for (int j = 0; j < i; j++) {
                    //出现大于则不符合
                    if (sequence[j] > last) {
                        return false;
                    }
                }
                //且他后面到最后一个元素之间的节点,都要“大于”他
                for (int k = i+1; k < sequence.length - 1; k++) {
                    //出现小于则不符合
                    if (sequence[k] < sequence[i]) {
                        return false;
                    }
                }
                //检查过一次符合条件的即可
                return true;
            }
        }
        return true;
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇