leetcode 之 Validate Binary Search Tree
2014-08-26 10:09
411 查看
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
read more on how binary tree is serialized on OJ.
方法一:根据二叉查找树中序遍历是递增序列的特点,在进行中序遍历时,如果发现某个节点的值比它的先序节点要大,那么就是非法的。
方法二:根据二叉查找树的定义,每一节点都在左右子树值的中间,因此,每次递归遍历时,给定一个值的范围,该范围是当前子树值的两个边界,用该范围来判断合法性,该方法的效率比方法一高
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.
方法一:根据二叉查找树中序遍历是递增序列的特点,在进行中序遍历时,如果发现某个节点的值比它的先序节点要大,那么就是非法的。
class Solution { public: bool isValidBST(TreeNode* root,TreeNode*& pre) { if(!root)return true; bool flag = isValidBST(root->left,pre); if(!flag)return false; if(pre && pre->val >= root->val)return false; pre = root; return isValidBST(root->right,pre); } bool isValidBST(TreeNode* root) { TreeNode* pre = NULL; return isValidBST(root,pre); } };
方法二:根据二叉查找树的定义,每一节点都在左右子树值的中间,因此,每次递归遍历时,给定一个值的范围,该范围是当前子树值的两个边界,用该范围来判断合法性,该方法的效率比方法一高
struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; class Solution { public: bool isValidBST(TreeNode* root,int minValue,int maxValue)//左右子树的范围 { if(!root)return true; if(minValue < root->val && root -> val < maxValue) { return isValidBST(root->left,minValue,root->val) && isValidBST(root->right,root->val,maxValue); } return false; } bool isValidBST(TreeNode* root) { return isValidBST(root,INT_MIN,INT_MAX); } };
相关文章推荐
- [leetcode]Validate Binary Search Tree
- [Leetcode]Validate Binary Search Tree
- 【LeetCode】98. Validate Binary Search Tree
- [LeetCode] Validate Binary Search Tree
- [leetcode] 98.Validate Binary Search Tree
- Leetcode 98. 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 98. Validate Binary Search Tree
- [leetcode]Validate Binary Search Tree
- [LeetCode] Validate Binary Search Tree
- LeetCode---Validate Binary Search Tree
- leetcode || 98、Validate Binary Search Tree
- 【C++】 LeetCode 98. Validate Binary Search Tree
- 【LeetCode】Validate Binary Search Tree 二叉查找树的判断
- Leetcode-Validate Binary Search Tree
- leetcode Validate Binary Search Tree
- [LeetCode] Validate Binary Search Tree