• 二叉搜索树的后序遍历序列


    https://www.nowcoder.com/questionTerminal/a861533d45854474ac791d90e447bafd

    描述

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

    解析

    BST的后序序列的合法序列是,对于一个序列S,最后一个元素是x (也就是根),如果去掉最后一个元素的序列为T,那么T满足:T可以分成两段,前一段(左子树)小于x,后一段(右子树)大于x,且这两段(子树)都是合法的后序序列。完美的递归定义 : ) 。

    代码

    public class Solution {
        public boolean VerifySquenceOfBST(int [] sequence) {
            if (null == sequence || sequence.length <= 0) {
                return false;
            }
            int length = sequence.length;
            return helper(sequence, 0, length - 1);
        }
        
        public boolean helper(int[] sequence, int left, int right) {
            // if(left >= right)    l==r对应的是叶子结点(只有1个节点),l>r对应的是空树,这两种情况都是true
            if (left >= right) {
                return true;
            }
            int root = sequence[right];
            int i = left;
            while (i <= right && sequence[i] < root) {
                i++;
            }
            for (int j = i; j <= right; j++) {
                if (sequence[j] < root) {
                    return false;
                }
            }
            return helper(sequence, left, i - 1) && helper(sequence, i, right - 1);
        }
    }
  • 相关阅读:
    pause函数
    内核实现信号捕捉原理
    sigaction()函数
    SSIS使用事务回滚
    Sql Server XML
    Powershell远程执行命令
    光盘yum源搭建
    挂载光盘
    网络管理
    用户管理
  • 原文地址:https://www.cnblogs.com/fanguangdexiaoyuer/p/10771617.html
Copyright © 2020-2023  润新知