【练习】判断整数序列是不是二元查找树的后序遍历结果
2011-10-24 10:16
363 查看
/************************************************************************/ /* 判断整数序列是不是二元查找树的后序遍历结果 题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。 如果是返回true,否则返回false。 例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果: 8 / \ 6 10 / \ / \ 5 7 9 11 因此返回true。 如果输入7、4、6、5,没有哪棵树的后序遍历的结果是这个序列,因此返回false。 思路:后序遍历结果数组的最后一个元素为根节点。 根节点的左子树全部小于根节点 根节点的右子树全部大于根节点 递归遍历左右子树是否二叉树 */ /************************************************************************/ #include <iostream> using namespace std; bool isResultOfBST(int* array,int length); int main() { int array[7]={5,7,6,9,11,10,8}; if (isResultOfBST(array,7)) { cout<<"yes"<<endl; } else { cout<<"no"<<endl; } } bool isResultOfBST(int* array,int length) { if (array==NULL||length==0) { return false; } bool result=true; int root=array[length-1]; int i=0; for (;i<length-1;i++) { if (array[i]>root) { break; } } int j=i;//根节点左右子树分界点 for (;j<length-1;j++) { if (array[j]<root) { return false; } } //递归遍历 bool lReult=true,rResult=true; if (i>0) { lReult=isResultOfBST(array,i); } if (i<length-1) { rResult=isResultOfBST(array+i,length-i-1); } return (lReult&&rResult); }
相关文章推荐
- 程序员面试题100题第6题——判断整数序列是不是二元查找树的后序遍历结果
- 数据结构面试题1.2.8-判断整数序列是不是二元查找树的后序遍历结果
- 算法—判断整数序列是不是二元查找树的后序遍历结果
- 程序员面试题精选100题(06)-判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 9.判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- NO_9判断整数序列是不是二元查找树的后序遍历结果
- 9 判断整数序列是不是二元查找树的后序遍历结果
- 面试100题:9.判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 剑指Offer 1367 判断整数序列是不是二元查找树的后序遍历结果
- 100题_06 判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 微软,Google面试题 (6) —— 判断整数序列是不是二元查找树的后序遍历结果
- 9. 判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果