二叉搜索树的后序遍历序列
来源:互联网 发布:澳大利亚土木工程知乎 编辑:程序博客网 时间:2024/05/16 17:32
题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
#include <iostream>using namespace std;bool VerifySquenceOfBST(int sequence[], int length){if(sequence == NULL && length <= 0)return false;int root = sequence[length -1];int i;for(i= 0; i < length-1; i++){if(sequence[i] > root)break;}int j;for(j = i; j < length -1; j++ ){if(sequence[j] < root )return false;}bool left = true;if(i > 0) left = VerifySquenceOfBST(sequence, i);bool right = true; //预定义为true,在最后如果为叶子节点的情况就出错了if(length - 1 - i > 0) right = VerifySquenceOfBST(sequence, length - 1 - i);return (right & left);}
// ====================测试代码====================void Test(char* testName, int sequence[], int length, bool expected){ if(testName != NULL) printf("%s begins: ", testName); if(VerifySquenceOfBST(sequence, length) == expected) printf("passed.\n"); else printf("failed.\n");}// 10// / \// 6 14// /\ /\// 4 8 12 16void Test1(){ int data[] = {4, 8, 6, 12, 16, 14, 10}; Test("Test1", data, sizeof(data)/sizeof(int), true);}// 5// / \// 4 7// /// 6void Test2(){ int data[] = {4, 6, 7, 5}; Test("Test2", data, sizeof(data)/sizeof(int), true);}// 5// /// 4// /// 3// /// 2// /// 1void Test3(){ int data[] = {1, 2, 3, 4, 5}; Test("Test3", data, sizeof(data)/sizeof(int), true);}// 1// \// 2// \// 3// \// 4// \// 5void Test4(){ int data[] = {5, 4, 3, 2, 1}; Test("Test4", data, sizeof(data)/sizeof(int), true);}// 树中只有1个结点void Test5(){ int data[] = {5}; Test("Test5", data, sizeof(data)/sizeof(int), true);}void Test6(){ int data[] = {7, 4, 6, 5}; Test("Test6", data, sizeof(data)/sizeof(int), false);}void Test7(){ int data[] = {4, 6, 12, 8, 16, 14, 10}; Test("Test7", data, sizeof(data)/sizeof(int), false);}void Test8(){ Test("Test8", NULL, 0, false);}int main(int argc, char* argv[]){ Test1(); Test2(); Test3(); Test4(); Test5(); Test6(); Test7(); Test8(); return 0;}
0 0
- 二叉树------二叉搜索树的后序遍历序列
- 【树5】二叉搜索树的后序遍历序列
- 题目10:二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 题目1367:二叉搜索树的后序遍历序列
- 1367:二叉搜索树的后序遍历序列 @jobdu
- 二叉搜索树的后序遍历序列
- Q24:二叉搜索树的后序遍历序列
- 剑指offer:二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 【剑指offer】二叉搜索树的后序遍历序列
- 题目1367:二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- WEB中配置错误页面
- 【笔试】37、顺时针打印矩阵
- 上传SVN中,如何屏蔽掉gen文件和bin文件
- Sparse Autoencoder Exercise
- 【spring框架】(一)spring简介
- 二叉搜索树的后序遍历序列
- java中的多线程问题
- 解决firefox弱临时 Diffie-Hellman 密钥的错误
- Hadoop常见错误及解决办法汇总
- 构造url测试action与dao实例
- 服务器硬件/系统信息查询
- 面试题16:翻转链表
- HDU 3743 Frosh Week(逆序对-BIT)
- liunx-fastboot命令行的使用方法