面试题24:二叉搜索树的后序遍历序列
来源:互联网 发布:淘宝助理一键复制宝贝 编辑:程序博客网 时间:2024/05/29 14:10
1.输入一个整数的数组,判断该数组是不是某棵二叉搜索树的后序遍历序列。假设输入的数组的任意两个数字互不相同。
结果:
分析:例如输入数组{5,7,6,9,11,10,8},则返回true,因为这个序列可以找到这样的一棵二叉搜索树满足条件,而对于序列{7,4,6,5}则找不到这样的二叉搜索树。
二叉搜索树的性质是,左子树的节点的值比根节点的值大,根节点的值小于右子树的节点的值。从后序遍历的结果来看,序列中最后一个节点应该是根节点,序列中比根节点小的值是左子树的节点,大的值是右子树的节点。然后下一步 就是对左右子树用同样的方法。
源码:
/*判断二叉树的后续序列是否合法*/#include<iostream>using namespace std;// BST:Binary Search Tree,二叉搜索树bool VerifySquenceOfBST(int sequence[], int length){if(sequence == NULL || length <= 0)return false;int root = sequence[length - 1];// 在二叉搜索树中左子树的结点小于根结点int i = 0;for(; i < length - 1; ++ i){if(sequence[i] > root)break;}// 在二叉搜索树中右子树的结点大于根结点int j = i;for(; j < length - 1; ++ j){if(sequence[j] < root)return false;}// 判断左子树是不是二叉搜索树bool left = true;if(i > 0)left = VerifySquenceOfBST(sequence, i);// 判断右子树是不是二叉搜索树bool right = true;if(i < length - 1)right = VerifySquenceOfBST(sequence + i, length - i - 1);return (left && right);}int main(){int data[] = {4, 8, 6, 12, 16, 14, 10};bool result=VerifySquenceOfBST(data, sizeof(data)/sizeof(int));if (result==true)cout<<"sequence one is right!"<<endl;elsecout<<"sequence one is error!"<<endl;int data2[] = {7, 4, 6, 5};result=VerifySquenceOfBST(data2, sizeof(data2)/sizeof(int));if (result==true)cout<<"sequence second is right!"<<endl;elsecout<<"sequence second is error!"<<endl;system("PAUSE");return 0;}
结果:
0 0
- [剑指offer][面试题24]二叉搜索树的后序遍历序列
- 面试题24:二叉搜索树的后序遍历序列
- 【剑指offer】面试题24:二叉搜索树的后序遍历序列
- 剑指Offer:面试题24 二叉搜索树的后序遍历序列
- 面试题24:二叉搜索树的后序遍历序列
- 《剑指Offer》面试题24:二叉搜索树的后序遍历序列
- 剑指offer 面试题24—二叉搜索树的后序遍历序列
- 面试题24:二叉搜索树的后序遍历序列
- 面试题24二叉搜索树的后序遍历序列
- 剑指offer--面试题24:二叉搜索树的后序遍历序列--Java实现
- 【剑指Offer学习】【面试题24:二叉搜索树的后序遍历序列】
- 面试题24_二叉搜索树的后序遍历序列
- 剑指Offer面试题24(Java版):二叉搜索树的后序遍历序列
- 剑指offer_面试题24_二叉搜索树的后序遍历序列(递归)
- 剑指offer面试题24-二叉搜索树的后序遍历序列
- 面试题24二叉搜索树的后序遍历序列cpp
- 面试题24:二叉搜索树的后序遍历序列
- 面试题24:二叉搜索树的后序遍历序列
- 把天聊死是一种怎样的感觉
- Linux-ACL相关设置
- Jprofile(一) - 连接本地服务器
- 怎样在Android Studio中导入Module
- pandas module 1 - 0.简介
- 面试题24:二叉搜索树的后序遍历序列
- ATOM基础教程一atom-autocomplete-php配置(14)
- Xcode 插件管理器 -- Alcatraz
- String,StringBuffer与StringBuilder的区别??
- retrofit2 使用教程 及 Android 网络架构搭建 (原创)
- eclilpse导入dorado项目运行失败
- 哪里可以获取Sigmaplot 13 破解版
- NO2 类与方法
- 【JZOJ 4628】立方体