Leetcode[98]-Validate Binary Search Tree
来源:互联网 发布:2016年淘宝用户数量 编辑:程序博客网 时间:2024/05/21 07:51
Link: https://leetcode.com/problems/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? > read more on how binary tree is serialized on OJ.
思路:递归方法,对于根结点
- 如果有左子树,比较根结点与左子树的最大值,如果小于等于则返回false;
- 如果有右子树,比较根结点与右子树的最小值 ,如果大于等于则返回false;
- 接着判断左子树和右子树是否也是合法的二叉搜索树;
Code(c++):
/** * 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) { if(root == NULL) return true; if(root->left && root->val <= leftMax(root->left)) return false; if(root->right && root->val >= rightMin(root->right)) return false; return isValidBST(root->left) && isValidBST(root->right); } //get the left tree max value int leftMax(TreeNode *root){ if(root == NULL) return INT_MIN; int max = root->val; int lmax = leftMax(root->left); int rmax = leftMax(root->right); int max1 = lmax>rmax?lmax:rmax; return max>max1?max:max1; } //get the right tree minimum value int rightMin(TreeNode *root){ if(root == NULL) return INT_MAX; int max = root->val; int lmin = rightMin(root->left); int rmin = rightMin(root->right); int max1 = lmin>rmin? rmin:lmin; return max>max1?max1:max; }};
0 0
- LeetCode 98: Validate Binary Search Tree
- LeetCode(98)Validate Binary Search Tree
- [leetcode 98] Validate Binary Search Tree
- [leetcode] 98 Validate Binary Search Tree
- [LeetCode 98]Validate Binary Search Tree
- leetcode-98 Validate Binary Search Tree
- leetCode 98-Validate Binary Search Tree
- leetcode || 98、Validate Binary Search Tree
- Leetcode NO.98 Validate Binary Search Tree
- Leetcode[98]-Validate Binary Search Tree
- LeetCode(98) Validate Binary Search Tree
- Leetcode# 98 Validate Binary Search Tree
- [leetcode-98]Validate Binary Search Tree(c++)
- leetcode 98: Validate Binary Search Tree
- leetCode 98:Validate Binary Search Tree
- LeetCode(98) Validate Binary Search Tree
- LeetCode 98: Validate Binary Search Tree
- [Leetcode 98] Validate Binary Search Tree
- shell学习第九天----分组
- 安卓服务在哪用
- Tomcat使用Memcached实现Session共享
- Lua中的字符串操作
- Maven学习(一)- 环境搭建
- Leetcode[98]-Validate Binary Search Tree
- 从苹果logo到冤案的发生 谈人类注意力饱和现象
- IBM Data Studio Web控制台在进行配置时发生错误
- 一个实际项目Java架构设计之ETL(Kettle)部分介绍
- Android开源项目——工具库篇
- Unique Binary Search Trees II
- 第15周-二进制文件与字符串流-项目0-课后实践·阅读程序(3)
- C# 调用C++链接库与回调
- 求最大公共字符串