[LeetCode 题解]: Validate Binary Search Tree
Given a binary tree, determine if it is a valid binary search tree (BST).
Assume a BST is defined as follows:
- The left subtree of a node contains only nodes with keys less than the node's key.
 - The right subtree of a node contains only nodes with keys greater than the node's key.
 - Both the left and right subtrees must also be binary search trees.
 
confused what "{1,#,2,3}" means?
The serialization of a binary tree follows a level order traversal, where '#' signifies a path terminator where no node exists below.
Here's an example:
1
/ \
2 3
/
4
\
5
The above binary tree is serialized as "{1,2,3,#,#,4,#,#,5}".
class Solution {
public:
    bool isValidBST(TreeNode *root) {
        if(!root ||(!root->left && !root->right)) return true;
         vector<int> vi;
         vi.clear();
         // 用非递归的方式对树进行中序遍历,将结果存放到vi数组中
         stack<TreeNode* > s;
         TreeNode *tmp=root;
         while(!s.empty() || tmp){
            if(tmp){
                s.push(tmp);
                tmp = tmp->left;
            }else{
                tmp = s.top();
                s.pop();
                vi.push_back(tmp->val);
                tmp = tmp->right;
            }
         }
         //对中序遍历的结果进行判断,注意不能有重复的数字
         for(int i=;i<vi.size();i++){
            if(vi[i]<=vi[i-]) return false;
         }
         return true;
    }
};
转载请注明出处: http://www.cnblogs.com/double-win/ 谢谢!
[LeetCode 题解]: Validate Binary Search Tree的更多相关文章
- 【leetcode】Validate Binary Search Tree
		
Validate Binary Search Tree Given a binary tree, determine if it is a valid binary search tree (BST) ...
 - leetcode dfs Validate Binary Search Tree
		
Validate Binary Search Tree Total Accepted: 23828 Total Submissions: 91943My Submissions Given a bin ...
 - 【题解】【BST】【Leetcode】Validate Binary Search Tree
		
Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defined as ...
 - Java for LeetCode 098 Validate Binary Search Tree
		
Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defined as ...
 - [LeetCode] 98. Validate Binary Search Tree 验证二叉搜索树
		
Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defined as ...
 - Leetcode 98. Validate Binary Search Tree
		
Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defined as ...
 - 【leetcode】Validate Binary Search Tree(middle)
		
Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defined as ...
 - leetcode 98  Validate Binary Search Tree ----- java
		
Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defined as ...
 - [leetcode]98. Validate Binary Search Tree验证二叉搜索树
		
Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defined as ...
 
随机推荐
- webpy简单使用
			
#!/usr/bin/env python import web import pymysql.cursors # Connect to the database connection = pymys ...
 - HTML5服务器推送消息的各种解决办法,html5服务器
			
HTML5服务器推送消息的各种解决办法,html5服务器 摘要 在各种BS架构的应用程序中,往往都希望服务端能够主动地向客户端推送各种消息,以达到类似于邮件.消息.待办事项等通知. 往BS架构本身存在 ...
 - [iOS]隐藏导航栏把右滑退出操作保留
			
项目因为用到上面导航栏样式多变,就隐藏了导航栏自己用View代替了,但手势却不见了,后来发现问题解决.操作如下: 千万不要取消 Shows Navigation Bar 这个选项否则手势会消失 应该是 ...
 - Eclipse快捷键大全(补充)
			
Ctrl+1 快速修复(最经典的快捷键,就不用多说了) Ctrl+Shift+O 自动导入所需要的包(这个用的次数也相当多)Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增 ...
 - iOS判断字母、数字串
			
以下为NSString类的扩展方法,分别是判断字符串是否只是包含字母.是否只包含数字.是否只包含字母和数字: //字母 - (BOOL)cdm_isOnlyLetters { NSCharacterS ...
 - H5 css学习
			
p{text-indent:2em;}段前空两格 段落排版--行间距(行高) p{line-height:1.5em;} 段落排版--中文字间距.字母间距 h1{ letter-spaci ...
 - Appium+python自动化-Remote远程控制
			
前言 在第三篇启动app的时候有这样一行代码driver = webdriver.Remote('http://192.168.1.1:4723/wd/hub', desired_caps),很多小伙 ...
 - SQL SERVER性能优化综述
			
SQL SERVER性能优化综述 一个系统的性能的提高,不单单是试运行或者维护阶段的性能调优的任务,也不单单是开发阶段的事情,而是在整个软件生命周期都需要注意,进行有效工作才能达到的.所以我希望按照软 ...
 - CloudStack 4.3功能前瞻
			
今天CloudStack 4.3已经Feature Freeze了,不会再有新功能加入到这个版本里.我们也可以坐下来看看哪些功能是值得期待的.首先,4.3的UI也秉承扁平化设计,看着更加简洁清爽.见下 ...
 - java中如何实现两个值互换
			
public class SwapVariable { public static void main(String[] args) { // 将两个数据进行交换: method2(,); metho ...