验证二叉查找树
2015-08-12 06:48
295 查看
二叉查找树
给定一个二叉树,判断它是否是合法的二叉查找树(BST)一棵BST定义为:
节点的左子树中的值要严格小于该节点的值。
节点的右子树中的值要严格大于该节点的值。
左右子树也必须是二叉查找树。
因为二叉查找树的中序遍历是有序的。所以验证是否为二叉查找树,用中序遍历这个二叉树,如果前一个结点的值大于当前结点的值,则证明这个不是二叉树。
代码实现
[code]bool isValidBST(TreeNode *root) { // write your code here if(root == NULL) return true; stack<TreeNode*> stk; TreeNode *pre = NULL; while(root || !stk.empty()) { if(root) { stk.push(root); root = root->left; } else { root = stk.top(); stk.pop(); if(pre && (root->val <= pre->val)) return false; pre = root; root = root->right; } } return true; }
(95) Validate Binary Search Tree
http://www.lintcode.com/zh-cn/problem/validate-binary-search-tree/
相关文章推荐
- 翻转二叉树(递归与非递归)
- Linux系统下快速删除某个目录下大量文件
- Android怎样进行布局
- 【LeetCode-面试算法经典-Java实现】【116-Populating Next Right Pointers in Each Node(二叉树链接右指针)】
- Animations
- 【LeetCode-面试算法经典-Java实现】【114-Flatten Binary Tree to Linked List(二叉树转单链表)】
- 【LeetCode-面试算法经典-Java实现】【113-Path Sum II(路径和)】
- 多线程
- CodeForces 429B()
- ds18b20驱动终于写好了
- GitHub上史上最全的Android开源项目分类汇总
- 我用的一些Node.js开发工具、开发包、框架等总结
- leetcode 4 Median of Two Sorted Arrays
- Qt打开外部程序的三种方法(两种阻塞,一种不阻塞)
- [LeetCode.Trick]Rotate Array
- 老哥
- Learning Play! 2.4
- C++ Memory Management C++ 内存管理
- Linux下进程间通信概述
- NET下RabbitMQ实践[实战篇]