面试题24:二叉搜索树的后序遍历序列
2015-07-03 15:32
337 查看
题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。假设输入的数组的任意两个数字都互不相同。
bool isPostOrder(vector<int>&num, int left, int right) { if (left == right) return true; int i = left; for (; i < right; ++i) {//找到左右子树的分界点 if (num[i] > num[right]) break; } //判断右子树中的所有元素是否都大于根元素 for (int j = i; j < right; ++j) if (num[j] < num[right]) return false; if (i==right) return isPostOrder(num,left,i-1); else return isPostOrder(num,left,i-1) && isPostOrder(num,i,right-1); } bool isPostOrder(vector<int>&num) { if (num.size()==0) return false; return isPostOrder(num,0, num.size()-1); }
相关文章推荐
- 黑马程序员-java基础-常用的类以及它的方法
- 黑马程序员-java基础-集合
- 黑马程序员---泛型,Collections,Arrays
- 黑马程序员——java基础---面向对象
- 面试题23:从上往下打印二叉树
- 面试
- 面试题22:栈的压入、弹出序列
- 【黑马程序员】Java学习笔记之继承(二)(面向对象)
- 最近开始码农
- iOS经典面试题(转)
- 黑马程序员——java基础---流程控制、函数、数组
- 黑马程序员--java基础学习笔记4
- 做好这五点,变身职场达人
- 【数据分析面试题】一个 面试题,我的回答
- 黑马程序员----OC学习之方法
- 面试题20:顺时针打印矩阵
- 黑马程序员——Java基础---异常
- iOS 面试题之多线程是什么?
- 黑马程序员————Java基础日常笔记---对集合的理解与总结二
- 逗比的程序员流派划分,你是哪派中人?