[LeetCode]Validate Binary Search Tree
来源:互联网 发布:网络空间拟态 编辑:程序博客网 时间:2024/06/18 01:11
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? > read more on how binary tree is serialized on OJ.OJ's Binary Tree Serialization: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 \ 5The above binary tree is serialized as "{1,2,3,#,#,4,#,#,5}".
思路一:二叉树(二叉搜索树)的中序遍历(左中右)应该是递增的序列。
所以只要写一下中序遍历即可。
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: bool isValidBST(TreeNode* root) { stack<TreeNode*> sta; TreeNode* T=root; double left_ele = INT_MIN-1.0; while(!sta.empty()||T){ while(T){ sta.push(T); T=T->left; } T = sta.top(); sta.pop(); if(T->val>left_ele) left_ele = T->val; else return false; T =T->right; } return true; }};
16ms AC
第二种思路就是递归,向左递归时,更新上界;向右递归时,更新下界。
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: bool isValidBST(TreeNode* root) { double upper = INT_MAX+1.0; double lower = INT_MIN-1.0; return check(root, upper,lower); } bool check(TreeNode* T, double upper, double lower){ if(!T) return true; else if(T->val>=upper||T->val<=lower) return false; return check(T->left,T->val,lower)&check(T->right,upper,T->val); }};
16ms AC
0 0
- LeetCode: Validate Binary Search Tree
- [Leetcode] Validate Binary Search Tree
- LeetCode : Validate Binary Search Tree
- [LeetCode] Validate Binary Search Tree
- [LeetCode] Validate binary search tree
- [LeetCode]Validate Binary Search Tree
- [Leetcode]Validate Binary Search Tree
- [leetcode]Validate Binary Search Tree
- LeetCode-Validate Binary Search Tree
- [leetcode] Validate Binary Search Tree
- LeetCode - Validate Binary Search Tree
- [LeetCode] Validate Binary Search Tree
- Leetcode Validate Binary Search Tree
- LeetCode | Validate Binary Search Tree
- LeetCode - Validate Binary Search Tree
- Leetcode: Validate Binary Search Tree
- 【Leetcode】Validate Binary Search Tree
- 【leetcode】Validate Binary Search Tree
- Android开发实践:使用Service还是Thread
- PAT(甲级)1092
- hadoop 2.X 二次开发 搭建环境
- nsq 学习
- OAuth协议详解
- [LeetCode]Validate Binary Search Tree
- Java知识点梳理内部类
- redis sentinel & cluster 原理分析
- 好用的lightbox插件
- 通过OpenSSL获取证书扩展属性之四:“CRL 分发点”和"颁发机构信息访问"
- PAT(甲级)1093
- Mysql 区分大小写
- raycloud
- 华为机试——找出数组中不同的两个数