判断整数序列是否为二元查找树后序遍历的结果
2012-12-23 20:38
381 查看
输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。
分析:
根据后序遍历的特点可知,最后一个元素会把前面的元素分成两部分,前一部分小于它,后一部分大于或等于它。如果满足这个条件同时左右两部分也有这个性质,则该序列是二元查找树后序遍历的结果。整个过程是一个递归过程。
对于一个长度小于等于2的序列,一定是某一二元查找树后序遍历的结果,返回true。
分析:
根据后序遍历的特点可知,最后一个元素会把前面的元素分成两部分,前一部分小于它,后一部分大于或等于它。如果满足这个条件同时左右两部分也有这个性质,则该序列是二元查找树后序遍历的结果。整个过程是一个递归过程。
对于一个长度小于等于2的序列,一定是某一二元查找树后序遍历的结果,返回true。
#include <iostream> using namespace std; bool isPostOrderOfBST(int* array, int len) { if(len <= 2) return true; int i = 0; while(array[i] < array[len-1] && i < len-1) i++; int j = i; while(array[j] >= array[len-1] && j < len-1) j++; if(j != len -1) { return false; } return isPostOrderOfBST(array, j) && isPostOrderOfBST(array+j, len-j-1); } int main() { int array[7] = {5, 7, 6, 9, 11, 10, 8}; cout << isPostOrderOfBST(array, 7) << endl; return 0; }
相关文章推荐
- 判断整数序列是否为二元查找树的后序遍历结果的解决方法
- 第九题(判断整数序列是不是二元查找树的后序遍历结果)
- 第9题:判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 算法-判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后续遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果(9)
- 程序员面试题100题第06题——判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 【算法】判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 【编程题目】判断整数序列是不是二元查找树的后序遍历结果,如果是,构建该二元查找树
- 判断整数序列是不是二元查找树的后序遍历结果 C++实现
- 9.判断整数序列是不是二元查找树的后序遍历结果(树)
- 面试100题:9.判断整数序列是不是二元查找树的后序遍历结果
- 微软面试之9题 判断整数序列是不是二元查找树的后续遍历结果
- 微软100题第9题(判断整数序列是不是二元查找树的后序遍历结果)
- 判断整数序列是不是二元查找树的后序遍历结果
- 9.判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果