判断二叉搜索树后序遍历结果
来源:互联网 发布:js事件源 编辑:程序博客网 时间:2024/06/05 22:41
问题描述:
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。数组为空为NO
思路:
如下图所示,搜索树后序遍历结果满足:最后一位为该树的root,其余数可视为两部分,它的左子树和右子树,并且左子树中所有点均小于root,右子树中所有点均大于root;
如果有出现在左子树中数大于root,或右子树中有比root小的则说明错误 返回NO
递归调用,将下列两部分在进行判断是否满足搜索树后序遍历的条件
代码如下:
bool VerifySquenceOfBST(vector<int> sequence) {if (sequence.empty())return false;int left = 0;int right = sequence.size() - 1;return _verfy(sequence, left, right);}bool _verfy(vector<int> seq, int left, int right){if (left == right)return true;int idx = left;if (seq[left] < seq[right]){while (idx < right){if (seq[idx] < seq[idx + 1])idx++;elsebreak;}if (idx == right)return true;}else{while (idx < right){if (seq[idx] > seq[idx + 1])idx++;elsebreak;}if (idx == right)return true;}////////////////////以上判断数组left到right之间的数是否为有序////////////int tmp = left;int root = right;while (tmp < right){if (seq[tmp]>seq[root])break;tmp++;}int cou = tmp;if (tmp == right)//////右子树为空return _verfy(seq, left, right - 1);while (tmp < right){if (seq[tmp] < seq[root])return false;tmp++;}return _verfy(seq, left, cou - 1) && _verfy(seq, cou, right - 1);}
阅读全文
0 0
- 判断二叉搜索树后序遍历结果
- 判断二叉搜索树后序遍历结果是否正确
- 二叉搜索树(篇1)判断数组是不是二叉搜索树后序遍历的结果
- 二叉搜索树后序遍历序列判断
- 二叉树系列7:判断整数序列是不是二叉搜索树的后序遍历结果
- 判断一个数组是不是二叉树后序遍历的结果
- 面试题06 - 判断二叉树后序遍历的结果 [树]
- 判断整数数列是不是二叉查找树后序遍历的结果
- 判断一个数列是否是二叉树后序遍历的结果
- Interview----判断整数序列是否是二叉搜索树的后序遍历结果
- 剑指offer24判断某一序列是否是某一搜索二叉树的后续遍历结果
- 判断数组是不是二叉搜索树的前序遍历结果
- 枚举所有序列 判断这个序列是不是二叉搜索树前序遍历的结果
- Java 判断一个序列是否是搜索二叉树的后序遍历结果
- 【算法-java】判断该数组是不是某二叉搜索树的后序遍历的结果
- 关于判断某一数组内容是否为一个二叉搜索树的后序遍历结果
- 二叉树问题---判断数组是否为某搜索二叉树的后序遍历的结果
- 输入一个整数数组,判断该数组是不是某个二叉搜索树的前序遍历结果
- LLVM学习笔记(15)
- _stdcall,_cdecl,_fastcall区别
- React-Native 工程添加推送功能 (iOS 篇)
- RxJava2应用场景案列
- jquery获取iframe的动态修改链接--用于刷新
- 判断二叉搜索树后序遍历结果
- Java-String踩坑小记
- sqoop实现mysql到hive数据库的导入导出
- ios UIWebView 展示HTML代码(UITableView 中添加webview 动态计算高度)
- 史上难求的自定义progress环形进度条效果——自定义View来袭!!!
- Android通用流行框架大全
- mysql数据库中JDBC与DBUtils的笔记和总结
- C#直接使用DllImport外部Dll的方法
- 初入Django3-- modes-生成表错误解决方案