判断二叉树是否二叉排序树(BST)
2015-10-08 17:35
411 查看
算法思想:由于二叉排序树的中序遍历可以得到一个有序的序列,因此,我们可以使用中序遍历进行求解。
代码如下:
也可以用递归实现
代码如下:
代码如下:
#include <stack> using namespace std; typedef struct BinaryTree { int data; BinaryTree *lc; BinaryTree *rc; }BTNode,*BinaryTree; bool isBST(BinaryTree T) { int prevalue = INT_MIN; //获取最小整型数,初始化prevalue stack<BinaryTree> s; BinaryTree p = T; while(p||!s.empty()) { if(p) { s.push(p); p = p->lc; } else { p=s.top(); s.pop(); if(prevalue>p->data) //判断前一个结点的值是否不满足二叉排序树的条件 break;//跳出循环,早外面判断 prevalue = p->data; p = p->rc; } } if(!p && s.empty()) return true; else return false; }
也可以用递归实现
代码如下:
typedef struct BinaryTree { int data; BinaryTree *lc; BinaryTree *rc; }BTNode,*BinaryTree; int prevalue = INT_MIN; //获取最小整型数,初始化prevalue bool isBST(BinaryTree T) { bool b1,b2; if(!T) return true; else { b1 = isBST(T->lc); if(b1 ==false||prevalue>T->data) return false; prevalue = T->data; b2 = isBST(T->rc); return b2; } }
相关文章推荐
- UVA - 10825 Anagram and Multiplication
- Matlab取整函数(fix, floor, ceil, round)的使用
- BackgroundWorker应用实例
- 用Spray构建RESTful接口
- 图相似性相关论文阅读总结
- 网络端口号大全 .
- 插入排序---直接插入排序算法(Javascript版)
- 详解在IOS后台执行
- mysql如何获取某个时间段的数据
- 黑马程序员---OC学习笔记之NSFileManager介绍和用法
- [iOS]转:iOS最佳实践
- linux用户管理
- 讨论一下云计算企业管理系统优势是什么
- NZY
- 软件的可行性研究
- Scala学习笔记09【Map、Tuple、Zip常用操作实战】
- 检测IP地址的正则表达式
- 适应不同手机分辨率的media query
- iOS 9: UIStackView入门
- Markdown 生成目录