牛客网刷题之二叉搜索树的后序遍历序列
来源:互联网 发布:深圳国际公益学院知乎 编辑:程序博客网 时间:2024/06/06 08:34
题目描述:
解题思路:
二叉搜索树又称排序树,查找树。特点是:如果树不为空,那么,左子树总是小于根节点,而右子树总是大于根节点。
因为是后序遍历,所以,根节点就是数组中最后一位。那么对于一个序列S,最后一个元素是x (也就是根),如果去掉最后一个元素的序列为T,那么T满足:T可以分成两段,前一段(左子树)总是小于x,后一段(右子树)总是大于x,且这两段(子树)都是合法的后序序列。显然,我们可以使用递归法。
分别使用两个指针指向T的首位和末位,可以从末位开始查找,先找到比根节点小的坐标index,那么index前边(包括index)就是左子树,而后边就是右子树,如果出现左子树元素大于根节点的话,就返回false,循环此过程,当两个指针相遇时,证明遍历完成,否则返回false。
题解:
public boolean VerifySquenceOfBST(int[] sequence) { if (sequence.length == 0) { return false; } return isBst(sequence, 0, sequence.length - 1); } public boolean isBst(int[] arr, int start, int root) { if (start >= root) return true; int index = root; // 找到比根小的坐标 while (index > start && arr[index - 1] > arr[root]) { index--; } for (int i = index -1 ; i >= start; i--) { if (arr[i] > arr[root]) { return false; } } return isBst(arr, start, index - 1) && isBst(arr, index, root - 1); }
ac结果:
0 1
- 牛客网刷题之二叉搜索树的后序遍历序列
- java之二叉搜索树的后序遍历序列
- 二叉树------二叉搜索树的后序遍历序列
- 【树5】二叉搜索树的后序遍历序列
- 题目10:二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 题目1367:二叉搜索树的后序遍历序列
- 1367:二叉搜索树的后序遍历序列 @jobdu
- 二叉搜索树的后序遍历序列
- Q24:二叉搜索树的后序遍历序列
- 剑指offer:二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 【剑指offer】二叉搜索树的后序遍历序列
- 题目1367:二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- Check failed: error == cudaSuccess (8 vs. 0) invalid device function
- spark访问qfs
- Spring的基于AspectJ的AOP开发
- 119.Edit Distance-编辑距离(中等题)
- 如何从CentOS官网下载我们想要的版本
- 牛客网刷题之二叉搜索树的后序遍历序列
- Windows下Clang环境的搭建
- [数据结构]文件
- vs的CheckBoxList输出所有选项的问题
- 无知的狂言(一)
- (Debug)VS2008安装报错:InternalInstallManager() with HRESULT -2147023293
- centos6.5下svn的搭建配置,以及自动更新代码
- itsCoder WeeklyBlog NO.4
- 前段页面点击按钮跳转至顶部