验证二叉查找树—LintCode
2017-10-12 17:22
357 查看
描述:
给定一个二叉树,判断它是否是合法的二叉查找树(BST)
一棵BST定义为:
节点的左子树中的值要严格小于该节点的值。
节点的右子树中的值要严格大于该节点的值。
左右子树也必须是二叉查找树。
一个节点的树也是二叉查找树。
ac代码:
给定一个二叉树,判断它是否是合法的二叉查找树(BST)
一棵BST定义为:
节点的左子树中的值要严格小于该节点的值。
节点的右子树中的值要严格大于该节点的值。
左右子树也必须是二叉查找树。
一个节点的树也是二叉查找树。
ac代码:
/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { * this->val = val; * this->left = this->right = NULL; * } * } */ class Solution { public: /* * @param root: The root of binary tree. * @return: True if the binary tree is BST, or false */ bool comp1(TreeNode *root, int k) { if(root==NULL) return true; if(root->val>=k) return false; return comp1(root->left,k)&comp1(root->right,k); } bool comp2(TreeNode *root, int k) { if(root==NULL) return true; if(root->val<=k) return false; return comp2(root->left,k)&comp2(root->right,k); } bool isValidBST(TreeNode * root) { // write your code here if(root==NULL) return true; if(root->left==NULL&&root->right==NULL) return true; bool a=true,b=true; if(!comp1(root->left,root->val)) return false; else a= isValidBST(root->left); if(!comp2(root->right,root->val)) return false; else b= isValidBST(root->right); return a&b; } };
相关文章推荐
- [LintCode]95.验证二叉查找树(二叉排序树/二叉搜索树) 中序遍历
- LintCode 97 验证二叉查找树
- Lintcode 验证二叉查找树
- LintCode-分治-验证二叉查找树
- lintcode-95-验证二叉查找树
- 验证二叉查找树-LintCode
- **[Lintcode]Validate Binary Search Tree 验证二叉查找树
- LintCode:验证二叉查找树
- LintCode-不同的二叉查找树 II
- 删除二叉查找树的节点-LintCode
- LintCode-剑指Offer-(378)将二叉查找树转换成双链表
- lintcode-不同的二叉查找树
- 验证二叉查找树
- 【二叉查找树】03验证是否为二叉查找树【Validate Binary Search Tree】
- 验证二叉查找树
- LintCode 11 二叉查找树中搜索区间
- LintCode-不同的二叉查找树
- Lintcode 11. 二叉查找树中搜索区间
- Lintcode---验证二叉查找树
- LintCode:在二叉查找树中插入节点